Solo perché Redis memorizza le cose in memoria non significa che si tratti di una cache. Ho visto persone che lo usano come archivio persistente per i dati.
Che può essere utilizzato come cache è un suggerimento che è utile come memoria ad alte prestazioni. Se il sistema Redis si interrompe, si potrebbero perdere dati che non sono stati nuovamente scritti sul disco. Esistono alcuni modi per mitigare tali pericoli, ad es. una replica hot-standby. Se i tuoi dati sono "mission-critical", come se gestissi una banca o un negozio, Redis potrebbe non essere la scelta migliore per te. Ma se si scrive un gioco ad alto traffico con dati live persistenti o alcuni elementi di interazione sociale e si gestisce la probabilità che la perdita di dati sia abbastanza accettabile, allora Redis potrebbe valere la pena dare un'occhiata.
In ogni caso, il punto rimane, sì, Redis può essere utilizzato come database.
fonte
2011-10-11 06:40:02
Ma come si controlla che la cache su redis debba essere aggiornata? Confrontate il conteggio dei record o c'è un modo migliore? – Marconi
Questo di solito viene fatto impostando un TTL per la chiave: http://redis.io/commands/ttl. Se la chiave scade, devi andare al DB. Quindi se la chiave è in redis, allora la usi. Nota che la semplice implementazione di questo causa alcuni problemi: quando una chiave popolare scade hai http://en.wikipedia.org/wiki/Thundering_herd_problem, vuoi usare http://en.wikipedia.org/wiki/Negative_cache, e il tuo DB ha bisogno di http://en.wikipedia.org/wiki/Admission_control –
Puoi definire "compatibile API"? Il protocollo è sicuramente diverso. Per citare l'autore di Redis «Fondamentalmente nel protocollo memcached la lunghezza del payload era uno degli argomenti separati dallo spazio, mentre nel protocollo Redis è a offset fisso (c'è solo un carattere" $ "prima)» (Fonte: http: //antirez.com/post/redis-memcached-benchmark.html) Tuttavia, è vero che dal momento che entrambi sono key/value store, dovrebbe essere piuttosto semplice adattare il codice usando Memcached per usare Redis. La mia ipotesi migliore è che intendessi "puoi sostituire un modulo/classe con un altro", giusto? – jpetazzo