REDIS:自动设置新添加的键的到期时间
我目前正在研究如何更有效地使用Redis。
在通过互联网进行调查后,我发现,使Redis更有效的一种方法是在服务器上为所有创建的密钥设置到期时间。 我目前正在将数据从Java程序加载到Redis中,但是我想在服务器端设置所有密钥的到期时间,而不是从Java程序中设置“ EXPIRE”命令。
我想知道是否有任何设置在REDIS服务器上添加新键(或所有键)并设置10分钟的到期时间的方法。当前,“ EXPIRE”命令需要提供特定的密钥。
我有一个想法是创建一个LUA脚本,该脚本会扫描具有TTL的所有键。如果TTL为-1,则设置到期时间。不过,该脚本必须定期运行。
另一个问题是,是否有更好/更有效的方法来完成此操作?
预先致谢。
你可以设置一个内存限制,当达到该限制时,所有的键都会被清除。这可能会回答你的问题,因为实际上你无法控制TTL。
从文档中可以看到:
如果你计划将Redis仅用作一个设置了过期时间的缓存,你可以考虑使用以下配置替代(假设最大内存限制为2兆字节):
maxmemory 2mb
maxmemory-policy allkeys-lru
另请参阅[将Redis用作LRU缓存的详细说明](https://redis.io/topics/lru-cache):它建议`allkeys-lru`比设置过期更节省内存。从同一文档中,您还可以尝试`volatile-ttl`策略,而不是`allkeys-lru`;那更接近你可能想要的。
作为其他答案的替代方案,如果你只想省略额外的命令,并且只进行基本的 SET 操作,那么可以使用 SETEX 命令,它是 SET 和 EXPIRE 的结合体,可能是你想要的。
https://redis.io/commands/setex
SETEX key seconds value
在redis-cli中,您可以执行以下操作:
SETEX keyhere seconds valuehere //变量nnog的例子
SET keyhere valuehere EX seconds //扩展版本
在处理实时数据时,它非常方便。
但是,请记住Redis将来可能会弃用SETEX。
根据他们的说法:
注意:由于SET命令选项可以替换SETNX、SETEX、PSETEX,因此在Redis的未来版本中,这三个命令可能会被弃用并最终被删除。
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?

你可以创建一个脚本来实现删除一周内的所有key(使用Python):
for key in redis.keys('*'): if redis.ttl(key) == -1: redis.expire(key, 604800)