Depende de lo que necesites, en general creo que:
- No debes preocuparte demasiado por las actuaciones. Redis es más rápido por núcleo con valores pequeños, pero memcached puede usar múltiples núcleos con un solo puerto ejecutable y TCP sin la ayuda del cliente. También memcached es más rápido con grandes valores del orden de 100k. Redis recientemente mejoró mucho acerca de los grandes valores (rama inestable) pero aún así Memcached es más rápido en este caso de uso. El punto aquí es: ni uno u otro será su cuello de botella para la consulta por segundo que pueden entregar.
- Debes preocuparte por el uso de la memoria. Para pares clave-valor simples, memcached es más eficiente en memoria. Si usa hash de Redis, Redis es más eficiente en la memoria. Depende del caso de uso.
- Debes preocuparte por la persistencia y la replicación, dos características que solo están disponibles en Redis. Incluso si su objetivo es construir un caché, ayuda que después de una actualización o un reinicio sus datos sigan ahí.
- Debería preocuparse por el tipo de operaciones que necesita. En Redis hay muchas operaciones complejas, incluso teniendo en cuenta el caso de uso del almacenamiento en caché, a menudo puede hacer mucho más en una sola operación, sin requerir que se procesen los datos del lado del cliente (a veces se necesita una gran cantidad de E / S). Estas operaciones son a menudo tan rápidas como GET y SET. Entonces, si no necesita solo GET / SET sino cosas más complejas, Redis puede ayudar mucho (piense en el almacenamiento en caché de la línea de tiempo).
Sin un caso de uso es difícil elegir el en este momento, pero creo que para muchas cosas Redis tiene sentido ya que incluso cuando no quieres usarlo como DB, siendo mucho más capaz puedes resolver más problemas, no solo el almacenamiento en caché, sino incluso los mensajes, la clasificación, etc.
PD, por supuesto, podría ser parcial ya que soy el desarrollador principal del proyecto Redis.