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

Speichern von Schlüsseln mit Präfix, die in redis ablaufen

Das geht nicht direkt. Sie können dem hset als Ganzes ein Ablaufdatum hinzufügen, aber nicht einzelnen Feldern. Wenn Sie dies tun möchten, können Sie r.expire('name', time) aufrufen , wobei time ist die Anzahl der Sekunden bis zum Ablauf.

Alternativ können Sie set verwenden statt hset :

for i in range(10):
    r.set('name:' + str(i), i, ex=time_to_expire_s)

Dies wird einige Funktionen wegnehmen, da Sie (zum Beispiel) keine gute Möglichkeit haben werden, alle Schlüssel aufzulisten, die mit 'Name:' beginnen, aber Sie können Ablaufzeiten für Schlüssel unabhängig festlegen.

Als zweite Option können Sie Ablaufzeiten in den Werten des hset festlegen . Dies erfordert clientseitige Logik, und Redis übernimmt keine Löschung für Sie. aber Sie könnten so etwas tun:

for i in range(10):
    r.hset(
        'name',
        i,
        json.dumps({ 'value': i, 'expiration': time.time() + time_to_expire_s })
    )

Und wenn Sie dann jemals einen Wert lesen, dessen Ablauf in der Vergangenheit liegt, betrachten Sie das als einen Cache-Fehler. Dies wird Ihnen nicht helfen, wenn Sie versuchen, Schlüssel ablaufen zu lassen, um Speicher freizugeben, aber wenn Ihr Ziel darin besteht, dass die Schlüssel aus irgendeinem Grund der Korrektheit ablaufen, könnte dies für Sie funktionieren.