Depende do que você precisa, em geral eu 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 é capaz de usar vários núcleos com um único executável e porta TCP sem a ajuda do cliente. Também o memcached é mais rápido com grandes valores na ordem de 100k. O Redis recentemente melhorou muito os valores grandes (ramificação instável), mas ainda o memcached é mais rápido neste caso de uso. O ponto aqui é:nem um ou outro provavelmente será seu gargalo para a consulta por segundo que eles podem fornecer.
- Você deve se preocupar com o uso da memória. Para pares de chave-valor simples, o memcached é mais eficiente em termos de memória. Se você usa hashes Redis, o Redis é mais eficiente em termos de 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 construir um cache, ajuda que, após uma atualização ou reinicialização, seus dados ainda estejam lá.
- Você deve se preocupar com o tipo de operação de que precisa. No Redis, existem muitas operações complexas, mesmo considerando apenas o caso de uso de cache, muitas vezes você pode fazer muito mais em uma única operação, sem exigir que os dados sejam processados no lado do cliente (muita E/S às vezes é necessária). Essas operações geralmente são tão rápidas quanto GET e SET simples. 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 agora, mas acho que para muitas coisas o Redis faz sentido, pois mesmo quando você não quer usá-lo como um banco de dados, sendo muito mais capaz, você pode resolver mais problemas, não apenas armazenamento em cache, mas até mesmo mensagens, classificação e assim por diante.
P.s. é claro que posso ser tendencioso, já que sou o principal desenvolvedor do projeto Redis.