我目前正在研究如何更有效地使用它的redis .
在研究互联网之后,我发现有效使用Redis的方法之一是在服务器上创建的所有密钥上设置到期时间 . 我目前正在将数据从Java程序加载到Redis中,但是我不想在Java程序中设置 EXPIRE
命令,而是设置服务器端所有密钥的到期时间 .
我想知道是否有任何方法设置任何新的KEYS(或所有密钥)添加到REDIS服务器,到期时间为10分钟 . 目前, EXPIRE
命令要求您提供特定密钥 .
我的一个想法是创建一个LUA脚本,用TTL扫描所有键 . 如果TTL为-1,则设置到期日 . 这个脚本必须定期运行 .
另一个问题是,是否有更好/更有效的方法来做到这一点?
提前致谢 .
3 回答
你可以创建一个脚本来做这样的事情来删除一周内的所有键(python):
作为其他答案的替代方案,如果're only looking to save the extra command, and you'仅执行基本
SET
,那么SETEX
命令可能是您正在寻找的组合SET
和EXPIRE
.https://redis.io/commands/setex
SETEX key seconds value
您可以设置内存限制,并在达到该限制时逐出所有密钥 . 这可能会也可能不会回答您的问题,因为您实际上并未控制TTL
来自docs:
另请参阅Using Redis as an LRU cache的详细说明:它表明
allkeys-lru
比设置过期更有效 . 从同一个文档中,您还可以尝试volatile-ttl
策略而不是allkeys-lru
;这更接近你可能想要的