Dalli ist ein hochleistungsfähiger reiner Ruby-Client für den Zugriff auf memcached-Server. Er funktioniert nur mit memcached 1.4+, da er das neuere Binärprotokoll verwendet.
Memcache
Memcached ist ein schnelles In-Memory-Protest-Reservierungs-Framework, das Rails mit nicht sehr vielen Änderungen viel schneller laufen lassen kann.
Memcached ist ein speicherinterner Key-Value-Speicher für kleine, beliebige Informationen (Strings, Objekte), die sich aus Datenbankaufrufen, API-Aufrufen oder dem Rendern von Seiten ergeben.
Führen Sie den folgenden Befehl aus, um memcached zu installieren
Unter Ubuntu
sudo apt-get install memcached
Auf dem Mac
brew install memcached
Unter der folgenden URL erfahren Sie mehr über die Installation von memcahed
https://github.com/petergoldstein/dalli#installation-and-usage
dalli gem installieren
Edelstein 'dalli'
Fügen Sie den oben genannten Edelstein zu Ihrem Gemfile hinzu und führen Sie bundle install aus.
Aufbau
Hier müssen wir unsere Rails-App so konfigurieren, dass sie Caching-Mechanisam bedient. Fügen Sie die folgende Zeile zur production.rb hinzu (config/environments/production.rb)
config.cache_store = :dalli_store
Dalli::Client akzeptiert die folgenden Optionen. Alle Zeiten sind in Sekunden angegeben.
abläuft_in: Globaler Standard für die Schlüssel-TTL. Der Standardwert ist 0, was bedeutet, dass er nicht abläuft.
Namensraum: Standardmäßig ist er gleich Null. Er wird jedem Schlüssel vorangestellt, wenn Sie Namespace angeben.
Ausfallsicherung: Standard ist true. Boolean, wenn true, wird Dalli auf einen anderen funktionierenden Server ausweichen, wenn der Hauptserver für einen Schlüssel ausgefallen ist.
thread-safe: Boolescher Wert. Wenn true, stellt Dalli sicher, dass nur ein Thread einen Socket zu einem bestimmten Zeitpunkt benutzt. Standard ist true.
Serialisierer: Der Serialisierer, der für zu speichernde Objekte (z. B. JSON) verwendet werden soll. Standard ist Marshal.
komprimieren: Boolean, wenn true, wird Dalli Werte größer als 1K gzip-komprimieren. Standard ist false.
komprimierung_min_größe: Mindestwert der Bytegröße, für den eine Komprimierung versucht werden soll. Standard ist 1K.
komprimierung_max_größe: Maximaler Wert der Bytegröße, für den eine Komprimierung versucht werden soll. Standard ist unbegrenzt.
Weitere Konfigurationen finden Sie unter
https://github.com/petergoldstein/dalli#configuration
Danach müssen wir dem ActionController sagen, dass er das Caching durchführen soll. Fügen Sie die folgende Zeile in dieselbe Datei ein und starten Sie den Rails-Server neu, wenn Sie ihn bereits ausführen.
config.action_controller.perform_caching = true
Bitte fügen Sie den folgenden Code in Ihre Indexmethode ein
@posts = Rails.cache.fetch('posts', expires_in: 5.minutes){
Post.all
}
Hier, Rails.catche.fetch liest die Daten aus dem Schlüssel 'posts'. Wenn der angegebene Schlüssel Daten enthält, werden diese zurückgegeben, andernfalls werden sie in diesen Schlüssel geschrieben und stehen für nachfolgende Aufrufe innerhalb der Ablaufzeit zur Verfügung.
Rails bietet Helfer wie Rails.cache.read, um den Cache zu lesen, Rails.cache.write, um in den Cache zu schreiben und Rails.cache.fetch, um die Ergebnisse zurückzugeben, wenn sie im Cache vorhanden sind, oder andernfalls in den Cache zu schreiben, um die Ergebnisse zurückzugeben.
Mehr über den Rails-Cache erfahren Sie unter
https://api.rubyonrails.org/classes/ActiveSupport/Cache/Store.html
Rails.cache.clear() - Leeren aller Schlüssel aus dem Memcached.
Rails.cache.delete('posts') - Wenn Sie einen bestimmten Schlüssel vom Memcached-Server flushen möchten.