这段代码是一个 Lua 脚本,用于在 Redis 中查找和返回过期的键。下面是对这段脚本的逐行解释:
local expiredArray = {}
: 创建一个空表expiredArray
,用于存储过期的键。local table_res = redis.call('hgetall', KEYS[1])
: 从 Redis 中获取哈希表中所有的字段和值,KEYS[1]
是传入脚本时指定的键。结果存储在table_res
变量中。if (table_res == "nil")
: 检查返回值是否为 nil。如果是 nil,则表示该哈希表不存在或为空。return expiredArray
: 如果哈希表不存在,返回空的expiredArray
。接下来的代码块处理非空的哈希表:
local count = 1
: 初始化计数器。if (#table_res >= 2) then ... end
: 确保返回的数据至少包含一对字段和值(即至少有两个元素)。
在循环中检查每个字段:
- 使用
string.find(table_res[i], "Mts") == 1
和string.find(table_res[i], "MTS") == 1
检查当前字段名是否以 “Mts” 或 “MTS” 开头。 - 如果匹配,将调用 Redis 的 TTL 命令检查该键的剩余生存时间(time-to-live)。
- 如果 TTL 小于 0,表示该键已经过期,那么将其添加到
expiredArray
中,并递增计数器。
- 使用
最后,通过调用函数返回收集到的过期键数组。
总结:这个脚本主要用于检查指定哈希表中的所有字段,并找到那些名称以 “Mts” 或 “MTS” 开头且已过期的键,然后将它们存储并返回。
内容由零声教学AI助手提供,问题来源于学员提问