Depende do que você precisa, em geral, acho que:
- Você não deve se importar muito com performances. O redis é mais rápido por núcleo com valores pequenos, mas o memcached pode usar vários núcleos com uma única porta executável e TCP sem a ajuda do cliente. O memcached também é mais rápido, com grandes valores na ordem de 100k. O Redis recentemente melhorou bastante em relação a grandes valores (ramificação instável), mas ainda assim o memcached é mais rápido nesse caso de uso. O ponto aqui é: nem um ou outro provavelmente será o seu gargalo para a consulta por segundo que eles podem fornecer.
- Você deve se preocupar com o uso de memória. Para pares simples de valores-chave, o memcached é mais eficiente em termos de memória. Se você usa hashes Redis, o Redis é mais eficiente em memória. Depende do caso de uso.
- Você deve se preocupar com persistência e replicação, dois recursos disponíveis apenas no Redis. Mesmo que seu objetivo seja criar um cache, é útil que, após uma atualização ou reinicialização, seus dados ainda estejam lá.
- Você deve se preocupar com o tipo de operações que precisa. No Redis, existem muitas operações complexas, mesmo considerando o caso de uso de armazenamento em cache, muitas vezes você pode fazer muito mais em uma única operação, sem exigir que os dados sejam processados no lado do cliente (muitas vezes é necessária muita E / S). Essas operações geralmente são tão rápidas quanto GET e SET. Portanto, se você não precisa apenas de GET / SET, mas de coisas mais complexas, o Redis pode ajudar muito (pense no cache da linha do tempo).
Sem um caso de uso, é difícil escolher o momento, mas acho que, para muitas coisas, o Redis faz sentido, pois mesmo quando você não deseja usá-lo como um banco de dados, sendo muito mais capaz, você pode resolver mais problemas, não apenas cache, mas também mensagens, classificação e assim por diante.
Ps, claro, eu poderia ser tendencioso, já que sou o principal desenvolvedor do projeto Redis.