我们运行一个Python(Django)应用程序,将数据临时存储在Redis中。 有时,虽然数据在Redis中存储的时间已经过期,因此调用setex的过期时间<= 0。
有没有办法让Redis在没有公开抱怨的情况下悄悄丢弃这样一个setex命令:
ResponseError: invalid expire time in setex
现在我不能从应用程序中做到这一点。
Django对于处理这种情况有非常好的原始。 只需将redis设置为您的一个CACHES,并使用cachr.set方法将存储过程设置为过期n秒。
你可以写一个LUA脚本来做到这一点。
发送密钥名称为KEYS,并将string和过期值设置为ARGV:
redis.call('set', KEYS[1], ARGV[1],'EX', ARGV[2]) return 1
只有到期date> 0时,您才可以拨打电话。不pipe操作如何,您都可以返回所需的任何答案。
用SCRIPT LOAD载入一次LUA脚本,保存其SHA1答案,并将其与EVALSHA一起使用,以避免发送/编译每个用法的lua脚本。