sql >> Databáze >  >> NoSQL >> Redis

Ukládání klíčů s prefixem, jehož platnost vyprší v redis

To nelze udělat přímo. Můžete přidat expiraci na hset jako celek, ale ne na jednotlivá pole. Pokud to chcete udělat, můžete zavolat r.expire('name', time) , kde time je počet sekund do vypršení platnosti.

Alternativně můžete použít set místo hset :

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

To vám odebere některé funkce, protože (například) nebudete mít dobrý způsob, jak vypsat všechny klíče začínající na 'name:', ale umožní vám to nastavit expirace klíčů nezávisle.

Jako druhou možnost můžete nastavit expirace v hodnotách hset . To vyžaduje logiku na straně klienta a Redis za vás žádné vymazání neprovede; ale můžete udělat něco jako:

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

A pokud pak někdy čtete hodnotu, jejíž expirace je v minulosti, považujete to za vynechání mezipaměti. To vám nepomůže, pokud se snažíte vypršet platnost klíčů, abyste uvolnili paměť, ale pokud je vaším cílem, aby platnost klíčů vypršela z nějakého důvodu správnosti, mohlo by vám to fungovat.




  1. php mongodb fulltextové vyhledávání a řazení

  2. Jak vyloučit jedno konkrétní pole z kolekce v Mongoose?

  3. Pracovat se dvěma samostatnými instancemi redis s sidekiq?

  4. Odstraňte více dokumentů z mongo v jednom dotazu