Redis
 sql >> база данни >  >> NoSQL >> Redis

Съхраняване на ключове с префикс, които изтичат в redis

Това не може да се направи директно. Можете да добавите срок на валидност за hset като цяло, но не и за отделни полета. Ако искате да направите това, можете да извикате r.expire('name', time) , където time е броят на секундите до изтичане.

Като алтернатива можете да използвате set вместо hset :

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

Това ще отнеме известна функционалност, тъй като (например) няма да имате добър начин да изброите всички ключове, които започват с 'name:', но ще ви позволи да зададете срока на валидност за ключовете независимо.

Като втора опция можете да зададете срокове на валидност в стойностите на hset . Това изисква логика от страна на клиента и Redis няма да извърши никакво изтриване вместо вас; но можете да направите нещо като:

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

И тогава, ако някога прочетете стойност, чието изтичане е в миналото, смятате, че това е пропуск в кеша. Това няма да ви помогне, ако се опитвате да изтекат ключовете, за да освободите памет, но ако целта ви е ключовете да изтекат поради някаква причина за коректност, това може да работи за вас.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Пишете на Slave redis db

  2. Не можа да се получи ресурс от пула (SocketTimeoutException:)

  3. Redis и Memcache или просто Redis?

  4. Разделете низ от символ в Lua

  5. Как мога да изчистя всички екземпляри от тип X в ServiceStack Redis Client