Ich verwende Redis derzeit als Arbeitswarteschlange für Sidekiq. Ich bin daran interessiert, es auch als Cache-Mechanismus für Rails.cache zu verwenden.
Der empfohlene Caching-Mechanismus für Rails läuft niemals ab und ist darauf angewiesen, das Element, das zuletzt verwendet wurde (LRU), zu entfernen. Leider ist Redis standardmäßig nicht so konfiguriert, dass das zuletzt verwendete Element gelöscht wird, während der empfohlene Cache-Speicher memcached ist.
Darüber hinaus ist das Verwerfen von Elementen kein Verhalten, das ich für meine Arbeitswarteschlange wünschen würde, und das Konfigurieren derselben Redis-Instanz zu diesem Zweck könnte zu unerwünschten Ergebnissen führen. Ich möchte auch nicht, dass meine Warteschlange Zyklen mit meinem Cache teilt.
Was würden Sie alle in dieser Situation empfehlen? Ein zweiter Redisspeicher, der als Cache fungiert und LRU konfiguriert hat? Oder verwenden Sie einfach den von rails empfohlenen memcached-Cache-Speicher und verwenden Sie redis nur als Warteschlange?
Ich habe den Vorzug, Redis und Memcached zu verwenden, obwohl es viele Stapelüberlauf-Artikel gibt, die etwas anderes empfehlen. memcached unterstützt standardmäßig die LRU-Räumung, was mich überzeugt.
Einige Artikel:
Versteckt in den Kommentaren, erwähnen Plakate, dass Memcaches LRU Räumung als ein guter Grund, es als Cache zu verwenden.
Der Hauptunterschied ist, dass Memcached in parallelen Kernen / Maschinen laufen kann, aber Redis ist so leicht und schnell, dass es eine Menge Last braucht, um an seine Grenzen zu kommen, wenn es auf einem vernünftigen Rechner läuft, wo es nur ein paar Kerne verwendet Nun, da es funktioniert, beide für Sie zu verwenden, ist das großartig, aber es klingt wie eine unnötige Kompliziertheit, beides zu verwenden, das ist alles. (Wenn Sie zum Beispiel Auftragnehmer brauchen, um daran zu arbeiten, brauchen Sie jemanden mit Erfahrung in beiden Technologien und nicht nur einen)
Tags und Links ruby ruby-on-rails caching memcached redis