用Redis批量删除和操作特定的数据的脚本
删除没有设置过期时间的Redis会话数据的批量删除脚本。
我最近制作了一个脚本,用于删除没有设置有效期限的数据。
我正在进行简单搜索,然后进行遍历,通过if语句进行检查,如果满足条件就执行删除操作。
redis.call('select', '1') --[[ DBの数字を選んでください ]]
local expresion = 'session*' --[[ 精査対象を正規表現で捉えてください ]]
local delete_count = 0
for _,session_key_id in ipairs(redis.call('keys', expresion))
do
if redis.call('TTL', session_key_id) == -1 then --[[ 有効期限が -1 (未設定)のものを削除します ]]
redis.call('DEL', session_key_id)
delete_count = delete_count + 1
end
end
return 'deleted:'..delete_count
操作方法很简单
redis-cli eval "$(cat search.lua)" 0
如果是在Docker环境下,情况可能是这样的
dc exec imdb redis-cli eval "$(cat search.lua)" 0