Redis
 sql >> Datenbank >  >> NoSQL >> Redis

Ablaufdatum für Hashmap-Werte in Redis festlegen?

Nein, Sie können mit SETEX keinen Hash erzeugen (was eine String-Methode ist). Sie können EXPIRE aufrufen auf Hash-Schlüssel, aber das verfällt der gesamte Hash. Derzeit gibt es keine Unterstützung für den Ablauf einzelner Hash-Schlüssel/Wert-Paare.

Aktualisierung:

Wenn Sie den Ablauf für den gesamten Hash festlegen möchten, während Sie seine einzelnen Elemente festlegen, können Sie dies auf verschiedene Arten erreichen.

  1. Verwenden Sie Pipelining. Pipelining ist ein spezieller Betriebsmodus, bei dem der Redis-Client mehrere Befehle schnell hintereinander ausgibt und nicht auf eine Antwort wartet, um den nächsten zu senden. Hier ist ein Beispiel in Ruby:

    redis.pipelined do
      redis.hset "foo", "bar", 1
      redis.expire "foo", 300
    end
    
  2. Transaktionen verwenden. Ohne überwachte Schlüssel ähnelt dies dem Pipelining (weil eine Transaktion nicht abgebrochen werden kann). Die Befehle laufen garantiert zusammen und atomar (mehrere Pipelines können verschachtelt laufen, Transaktionen werden serialisiert)

    redis.multi do
      redis.hset "foo", "bar", 1
      redis.expire "foo", 300
    end
    
  3. Verwenden Sie Lua-Scripting, um Ihren benutzerdefinierten HSETEX-Befehl zu implementieren. Es wird atomar ausgeführt und Sie müssen nur einen Befehl senden (statt 2 (Pipelining) oder 4 (Transaktion)).