用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
广告
将在 10 秒后关闭
bannerAds