Helaas niet. De "containers" van Redis (d.w.z. lijsten, hashes, sets en gesorteerde sets) ondersteunen geen vervaldatum per lid, hoewel deze functionaliteit in het verleden vaak is aangevraagd.
U kunt echter uw eigen logica implementeren om dat resultaat te bereiken. Er zijn verschillende mogelijke benaderingen om dit aan te pakken - hier is een voorbeeld. Gebruik in plaats van een set een gesorteerde set (ZSET) en stel de score van elk lid in op de vervaltijd met behulp van epoch-waarden. Dit type workflow kan bijvoorbeeld worden geïmplementeerd met behulp van een Lua-script. Gebruik iets als:
. om leden toe te voegenredis.call('zadd', KEYS[1], os.time()+ARGV[1], ARGV[2])
en EVAL het met behulp van '1 a 60 1' en '1 a 120 2' als argumenten, volgens uw voorbeeld. Om de items uit de set daadwerkelijk te "verlopen", moet je ze verwijderen zodra hun tijd is verstreken. U kunt dat doen door een periodiek proces te implementeren dat uw lijst scant of door deze te openen. De volgende Lua kan bijvoorbeeld worden gebruikt om leden te laten vervallen:
redis.call('zremrangebyscore', KEYS[1], '-inf', os.time())
en EVAL het met '1 a' als argumenten volgens uw voorbeeld.
EDIT:Hoe het bovenstaande te bereiken met Python
import time
import redis
def add(r, key, ttl, member):
r.zadd(key, member, int(time.time()+ttl))
def expire(r, key):
r.zremrangebyscore(key, '-inf', int(time.time()))
...
r = redis.Redis()
add(r, 'a', 1, 60)
add(r, 'a', 2, 120)
# periodically or before every operation do
expire(r, 'a')