Ich habe das System, das gleichzeitige sendet Anfragen an couchbase. Jedes Mal, wenn das System den Schlüssel erhält, sollte es seine Lebensdauer aktualisieren (verlängern). Die Menge an Zeit ist nicht so wichtig und misst nach Tagen: Die Hauptidee ist, dass der Schlüssel entfernt werden sollte, nachdem niemand ihn für einige Zeit bekommen hat (zum Beispiel 20 Tage).Aktualisierungszeit für Schlüssel in couchbase
Ich denke, dass touch
Betrieb sollte verwendet werden, aber sollte ich lock
Schlüssel, die die Dinge schwieriger machen würde? Ist es in Ordnung, memcached-Paket zu verwenden (es scheint nicht lock
API zu haben, aber vielleicht gets
sollte den Trick tun)?
import pylibmc
class Cache(Singleton):
def init(self):
self.mc = pylibmc.Client(
# connection settings here
)
def get(self, key):
"""get key without locking it and update lifetime"""
result = self.mc.get(key)
if result:
# prolongate key for another 20 days
self.mc.touch(key, 60*60*24*20)
return result
def get_and_lock(self, key):
"""lock the key while getting it and update lifetime"""
# should use couchbase package as memcached does not have lock API
# or use 'gets' instead?