Beror på vad du behöver, i allmänhet tror jag att:
- Du bör inte bry dig för mycket om framträdanden. Redis är snabbare per kärna med små värden, men memcached kan använda flera kärnor med en enda körbar och TCP-port utan hjälp från klienten. Också memcached är snabbare med stora värden i storleksordningen 100k. Redis förbättrade nyligen mycket om stora värden (instabil gren) men memcached är fortfarande snabbare i detta användningsfall. Poängen här är:varken det ena eller det andra kommer sannolikt att bli din flaskhals för den fråga per sekund de kan leverera.
- Du bör bry dig om minnesanvändning. För enkla nyckel-värdepar är memcachad mer minneseffektiv. Om du använder Redis-hashar är Redis mer minneseffektivt. Beror på användningsfallet.
- Du bör bry dig om persistens och replikering, två funktioner som bara är tillgängliga i Redis. Även om ditt mål är att bygga en cache så hjälper det att din data fortfarande finns kvar efter en uppgradering eller omstart.
- Du bör bry dig om vilken typ av operationer du behöver. I Redis finns det många komplexa operationer, även med tanke på användningsfallet för cachning, kan du ofta göra mycket mer i en enda operation, utan att kräva att data bearbetas på klientsidan (mycket I/O behövs ibland). Dessa operationer är ofta lika snabba som vanlig GET och SET. Så om du inte bara behöver GET/SET utan mer komplexa saker kan Redis hjälpa mycket (tänk på tidslinjecache).
Utan ett användningsfall är det svårt att välja rätt just nu, men jag tror att för många saker är Redis vettigt eftersom även när du inte vill använda det som en DB, eftersom du är mycket mer kapabel kan du lösa fler problem, inte bara cachelagring utan även meddelanden, rangordning och så vidare.
P.s. Naturligtvis kan jag vara partisk eftersom jag är den ledande utvecklaren av Redis-projektet.