sql >> Base de Datos >  >> NoSQL >> Redis

Almacenamiento de claves con prefijo que caducan en redis

Esto no se puede hacer directamente. Puede agregar un vencimiento en el hset como un todo, pero no en campos individuales. Si desea hacer esto, puede llamar a r.expire('name', time) , donde time es el número de segundos hasta la expiración.

Como alternativa, puede usar set en lugar de hset :

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

Esto eliminará algunas funciones, ya que (por ejemplo) no tendrá una buena manera de enumerar todas las claves que comienzan con 'nombre:', pero le permitirá establecer la caducidad de las claves de forma independiente.

Como segunda opción, puede establecer vencimientos en los valores del hset . Esto requiere una lógica del lado del cliente, y Redis no eliminará nada por usted; pero podrías hacer algo como:

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

Y luego, si alguna vez lee un valor cuyo vencimiento está en el pasado, lo considera un error de caché. Esto no lo ayudará si está tratando de hacer caducar las claves para liberar memoria, pero si su objetivo es que las claves caduquen por algún tipo de razón de corrección, esto podría funcionar para usted.