2010-11-19 8 views

Respuesta

42

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 

Más info about Rails.cache.

+1

¿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

37

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:

  1. 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"
  2. 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é.

+5

http://seal-7.blogspot.com/2011/11/rails-benchmarking-reloaded.html –

+9

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

+2

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

2

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.

Cuestiones relacionadas