Dipende da cosa ti serve, in generale penso che:
- Non dovresti preoccuparti troppo delle prestazioni. Redis è più veloce per core con valori piccoli, ma memcached è in grado di utilizzare più core con un singolo eseguibile e una porta TCP senza l'aiuto del client. Anche memcached è più veloce con valori grandi nell'ordine di 100k. Redis ha recentemente migliorato molto i valori grandi (ramo unstable) ma memcached è ancora più veloce in questo caso d'uso. Il punto qui è:né l'uno né l'altro saranno probabilmente il collo di bottiglia per la query al secondo che possono fornire.
- Dovresti preoccuparti dell'utilizzo della memoria. Per semplici coppie chiave-valore memorizzate nella cache è più efficiente in termini di memoria. Se usi gli hash Redis, Redis è più efficiente in termini di memoria. Dipende dal caso d'uso.
- Dovresti preoccuparti della persistenza e della replica, due funzionalità disponibili solo in Redis. Anche se il tuo obiettivo è creare una cache, è utile che dopo un aggiornamento o un riavvio i tuoi dati siano ancora lì.
- Dovresti preoccuparti del tipo di operazioni di cui hai bisogno. In Redis ci sono molte operazioni complesse, anche solo considerando il caso d'uso della memorizzazione nella cache, spesso puoi fare molto di più in una singola operazione, senza richiedere l'elaborazione dei dati lato client (a volte è necessario molto I/O). Queste operazioni sono spesso veloci quanto semplici GET e SET. Quindi, se non hai solo bisogno di GET/SET ma di cose più complesse, Redis può aiutare molto (pensa alla memorizzazione nella cache della timeline).
Senza un caso d'uso è difficile scegliere quello in questo momento, ma penso che per molte cose Redis abbia senso poiché anche quando non vuoi usarlo come DB, essendo molto più capace puoi risolvere più problemi, non solo memorizzazione nella cache, ma anche messaggistica, ranking e così via.
p.s. ovviamente potrei essere di parte dato che sono lo sviluppatore principale del progetto Redis.