我应该使用哪个命令来让Redis中那些生命期少于5天的键过期?
2014-2-10 21:37:26
收藏:0
阅读:103
评论:2
我的数据库会将会话设置为哈希值:
1) "sid:lpg3um654ckqp7tj7fkr2qs2Zz"(该会话的TTL为一周)
2) "sid:lpg3um654ckqp7tj7fkr2qs2Yy"(该会话的TTL为6天)
3) "sid:g6sftph5dnun5bk6l0hqyyh6p5"(该会话的TTL为5天)
4) "sid:g6sftph5dnun5bk6l0hqyxh6x3"(该会话的TTL为4天)
5) "sid:g6sftph5dnun5bk6l0hqyxh4t1"(该会话的TTL为3.5天)
我知道你可以从命令行为单个键设置TTL,但是你如何为将在一定时间内到期的一批键设置TTL(即TTL少于5天)?运行该命令应该导致删除条目4和5。
点赞
用户3160475
以下是一个 Lua 脚本(必须……遵守……标签……),它使用DEL根据您的定义删除s id,尽管我在 KEYS的循环使用处有注释(因为 Lua 脚本是原子性的,所以这里不需要 SCAN,而 DEL 不起作用,因为 SCAN 是随机的),并返回已删除键的名称:
local exp=ARGV[1] * 60 * 60 * 24;
local exs={};
local keys=redis.call('keys', 'sid:*');
for _,v in next,keys,nil do
local ttl=redis.call('ttl', v);
if ttl < exp then
redis.call('del', v);
exs[#exs + 1] = v;
end
end
return exs;
注意: 这个脚本使用起来不安全,可能会破坏您的生产实例(更不用提它不是群集安全的);)
2014-02-15 18:01:00
评论区的留言会收到邮件通知哦~
推荐文章
- 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 代码?

#!/bin/bash FIVEDAYS=432000 redis-cli KEYS "*" | while read LINE; do TTL=`redis-cli ttl $LINE `; if [ $TTL -le $FIVEDAYS ]; then `redis-cli expire $LINE 5`; echo "Deleted $LINE"; fi; done;#!/bin/bash FIVEDAYS=432000 # 获取所有 Redis 的 Key redis-cli KEYS "*" | while read LINE; do # 获取 Key 的 TTL(剩余生存时间) TTL=`redis-cli ttl $LINE `; # 如果 Key 的 TTL 小于五天,则设置 Key 的过期时间为 5 秒,并打印出被删除的 Key if [ $TTL -le $FIVEDAYS ]; then `redis-cli expire $LINE 5`; echo "Deleted $LINE"; fi; done;这是一个 Bash 脚本,实现的功能是删除 Redis 中 TTL(剩余生存时间)小于五天的所有 key。
脚本首先定义了一个变量
FIVEDAYS,表示五天的时间,以秒为单位。接着,脚本使用redis-cli命令获取 Redis 中的所有 key,并循环遍历每个 key。在循环中,脚本使用
redis-cli命令获取当前 key 的 TTL,如果 TTL 小于五天,则将该 key 的过期时间设置为 5 秒,并输出被删除的 key。该脚本可以通过
crontab等工具定期运行,保持 Redis 中的数据不过期。