Rails e caching, è facile passare da memcache e Redis?
-
26-09-2019 - |
Domanda
C'è un API comune in modo tale che, se posso passare tra Redis o memcached non devo cambiare il mio codice, solo un ambiente di configurazione?
Soluzione
Fino a quando non si inizializza il cliente Memcached da soli, ma si basano su Rails.cache
comuni API, il passaggio da Memcached a Redis è solo una questione di installazione di Redis-store e cambiando la configurazione da
config.cache_store = :memcached_store
a
config.cache_store = :redis_store
Altri suggerimenti
Non mi piace a pasticciare con i vostri obiettivi, ma vorrei consigliare di non usare Redis sopra memcached per le rotaie generici nella cache.
Io uso Redis e Resque ampiamente in un'applicazione grandi rotaie e ho pensato che sarebbe stato bello per consolidare la memorizzazione nella cache, Redis prime e resque in uno solo. Mi sono imbattuto in un paio di grandi temi:
- Prima di tutto, è stato più lento. Avrebbe potuto totalmente stato il mio utilizzo specifico, la biblioteca Redis-negozio o si Redis. Io non ho intenzione di parlare male di niente e la vostra situazione potrebbe essere diversa, ma sarebbe succhiare per scaricare un sacco di tempo per la commutazione Redis quando memcached "funziona"
- Memcached è bello perché è estremamente facile da aggiungere server e utilizzare hashing coerente per realizzare i tuoi obiettivi. Redis ha anche questo, ma nella mia esperienza era difficile Redis contemporaneamente trattare come sia un datastore monolitico in alcune parti della mia app e in altre parti trattarlo come un distribuiti, blob costantemente hash di memorizzazione nella cache di stoccaggio.
Buona fortuna con il vostro progetto. Amo Redis E Memcached e li usa in tutti i miei progetti, ma ho lasciato uno farlo proprio lavoro come un server di struttura di dati kick-ass e lasciare l'altra calci in culo alla cache.
Le parti ordinate di Redis includono la memorizzazione nella cache "basati su elenco" cose - che spingono / popping cose da questa lista che avvengono nella vostra app.
Invece di de-serializzazione un grande valore da memcached, modificarlo, poi ri-serializzazione.
Questo sarebbe stato fatto in codice Ruby in un filtro personalizzato, contro la cache rotaie di base.