¿Hay una API común, de modo que si cambio entre Redis o Memcached no tengo que cambiar mi código, solo una configuración?Rieles y almacenamiento en caché, ¿es fácil cambiar entre Memcache y Redis?
Respuesta
Mientras no inicializa el cliente Memcached sí mismo, sino que se basan en Rails.cache
API común, el cambio de Memcached a Redis es sólo una cuestión de instalar redis-store y cambiar la configuración de
config.cache_store = :memcached_store
a
config.cache_store = :redis_store
No me gusta meterme con tus objetivos, pero desaconsejaría usar redis sobre memcached para el caché genérico de rieles.
Uso redis y resque extensivamente en una aplicación de rieles grandes y pensé que sería bueno consolidar el almacenamiento en caché, redis sin procesar y resque en uno. Me encontré con algunos problemas importantes:
- En primer lugar, fue más lento. Podría haber sido totalmente mi uso específico, la biblioteca redis-store o redis sí mismo. No voy a hablar mal de nada y su kilometraje puede variar, pero sería malo perder mucho tiempo cambiando a redis cuando memcached "simplemente funciona"
- Memcached es agradable porque es extremadamente fácil de agregar servidores y usar hash consistente para lograr tus objetivos Redis tiene esto también, pero en mi experiencia fue difícil tratar simultáneamente redis, ya que tanto un almacén de datos monolítico en algunas partes de mi aplicación como en otras partes lo tratan como una distribución distribuida, consistentemente en hash de almacenamiento en caché.
Buena suerte con su proyecto. Me encanta redis Y mecanografiar y usarlos en todos mis proyectos, pero dejo que uno haga su trabajo como un servidor de estructura de datos kick-ass y dejo que el otro patee el culo en el almacenamiento en caché.
http://seal-7.blogspot.com/2011/11/rails-benchmarking-reloaded.html –
memcached tiene más capacidad de procesamiento que Redis como simple almacén de valores-clave porque memcached tiene múltiples subprocesos y Redis tiene un único subproceso . Por lo tanto, Redis pronto consumirá el 100% de uso de un núcleo de CPU alcanzando su máximo rendimiento mientras que Memcached usará felizmente tantos núcleos de CPU como usted tenga y por lo tanto escalará mucho más en su rendimiento máximo. En un sistema de un solo núcleo (¿quién los usa?) Redis puede ser más rápido, pero Redis solo es beneficioso cuando utiliza sus tipos de datos adicionales o persistencia u otras características. – ColinM
Esto realmente no aborda la cuestión y, además, no creo que su experiencia de una sola vez justifique el asesoramiento contra el uso de Redis para el almacenamiento en caché, ya que parece que mucha gente lo está utilizando con éxito para eso exactamente. – Yarin
Las partes ordenadas de Redis incluyen el almacenamiento en caché de cosas "basadas en listas", empujando/reventando cosas de esta lista a medida que suceden en su aplicación.
En lugar de deserializar un gran valor de memcached, edítelo, y vuelva a serializarlo.
Esto se haría en código ruby en un filtro personalizado, frente a la memoria caché básica de rieles.
- 1. Redis y Memcache o solo Redis?
- 2. Comparación de Memcache, Redis y ehcache como marco de almacenamiento en caché distribuido
- 3. MemCache vs Almacenamiento en caché de Azure
- 4. ¿Rieles con Memcache devolviendo el objeto en caché incorrecto?
- 5. Entrevista pregunta: factoriales y almacenamiento en caché
- 6. ¿Por qué utilizar Redis en lugar de MongoDb para el almacenamiento en caché?
- 7. Diferencia entre Memcache y Python diccionario
- 8. Soluciones de almacenamiento en caché y consultas
- 9. Almacenamiento en memoria caché REST y URI
- 10. Memcache para usar almacenamiento en disco?
- 11. ¿cuál es la diferencia entre l1 caché y l2 caché?
- 12. ¿Cuál es la diferencia entre el almacenamiento en caché y la agrupación?
- 13. ¿Cuál es la diferencia entre "errores de caché" y "errores de memoria caché" en Ehcache?
- 14. Problemas extraños de caché con heroku/memcache y dalli
- 15. Anulación de desbordamiento de pila, redis y caché
- 16. rieles fragmento de almacenamiento en caché rindió plantilla de líquido
- 17. caché de página en rieles
- 18. Almacenamiento en caché de archivos Javascript y CSS específicos
- 19. Redis replication y redis sharding (clúster) diferencia
- 20. Definición de función Haskell y matrices de almacenamiento en caché
- 21. Arquitectura para Redis caché y Mongo para persistencia
- 22. Memcache vs APC para un almacenamiento en caché de datos de sitio de servidor único
- 23. Almacenamiento en memoria caché en Haskell y paralelismo explícito
- 24. Almacenamiento en caché en urllib2?
- 25. ¿Memcache (Java) para Google App Engine es un caché global?
- 26. almacenamiento en caché de la imagen, y HTTPHandler FormsAuthentication
- 27. Almacenamiento en caché IEnumerable
- 28. Descanso de la negociación de contenido y almacenamiento en caché
- 29. <ui: param y el almacenamiento en caché
- 30. ¿Cuál es la mejor práctica para el manejo de listas y conjuntos en Redis?
¿Cómo se puede utilizar Redis tanto para el almacenamiento en caché de fragmentos como para los trabajos de Sidekiq sin que finalmente se quede sin memoria? ¿Es posible usar la misma instancia de Redis para mantener siempre los trabajos de Sidekiq, pero use un primer incomo primero para los fragmentos? – Mohamad