服务器批量清理redis keys,无法适用客户端必须直连的情况

在 Redis 中,批量清理指定模式的键(例如 memberCardData:*)可以通过多种方法来实现。需要注意的是,Redis 的命令执行是单线程的,因此对大量键进行操作时可能会阻塞服务器。以下是几种常见的方法:

shell

复制代码
KEYS memberCardData:*

使用 KEYS 命令(不推荐用于生产环境)

然后你可以使用 DEL 命令删除这些键。但是,KEYS 命令会遍历整个键空间,这在大数据集上是非常慢且消耗资源的操作,可能会导致 Redis 服务短时间不可用,因此不建议在生产环境中使用。

使用 SCAN 命令

SCAN 是一个增量迭代器,它提供了非阻塞地迭代数据库键的能力。你可以结合 SCAN 和 DEL 来安全地删除匹配的键。这里是一个简单的例子,展示如何使用 SCAN 来查找并删除键:

复制代码
SCAN 0 MATCH memberCardData:* COUNT 100

这个命令将返回最多 100 个匹配的键,你可以接着用 DEL 命令删除它们。为了确保所有匹配的键都被删除,你需要在一个循环中不断调用 SCAN,直到游标返回 0。

bash 的运行命令如下:

bash 复制代码
redis-cli -h <host> -p <port> -a <password> --scan --pattern 'memberCardData:*' | xargs redis-cli -h <host> -p <port> -a <password> del

lua

lua 复制代码
local keys = redis.call('KEYS', 'memberCardData:*')
if next(keys) ~= nil then
    redis.call('DEL', unpack(keys))
end
return #keys

你可以通过 EVAL 或 EVALSHA 命令来执行这个 Lua 脚本。不过,与 KEYS 命令一样,如果数据量很大,执行这样的 Lua 脚本也可能会造成阻塞。

以下是服务器运行需要

bash 复制代码
redis-cli -h <host> -p <port> -a <password> EVAL "local keys = redis.call('KEYS', 'memberCardData:*') if next(keys) ~= nil then redis.call('DEL', unpack(keys)) end return #keys" 0

EVAL

EVAL 是 Redis 提供的一个命令,用于执行 Lua 脚本。它允许你在 Redis 服务器上直接运行 Lua 代码,这在需要复杂逻辑或批量操作时非常有用。Lua 脚本在 Redis 内部是原子性执行的,也就是说,在脚本执行期间不会被其他客户端的请求打断。

shell 复制代码
EVAL script numkeys [key [key ...]] [arg [arg ...]]

script: 要执行的 Lua 脚本(作为一个字符串传递)。

numkeys: 脚本中涉及的键的数量。这些键会被传入到 Lua 脚本中的 KEYS 数组中。

key \[key ...]: 涉及的键列表,按照它们在 numkeys 中指定的顺序排列。

arg \[arg ...]: 传递给 Lua 脚本的额外参数,这些参数会被传入到 Lua 脚本中的 ARGV 数组中。

相关推荐
分布式存储与RustFS9 分钟前
自托管对象存储的三种 TLS 签发:自签、Let‘s Encrypt、内网 CA 的选择与轮换
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
兴通物联科技24 分钟前
对俄出口诚实标识 2026 时间节点与产线赋码采集技术方案
大数据·服务器·单片机·嵌入式硬件·深度学习·计算机视觉
VidDown26 分钟前
从一堆脚本到能维护的系统:视频处理管道的工程化
服务器·ffmpeg·音视频·视频编解码
Li-Yongjun28 分钟前
fuser
运维
William Dawson29 分钟前
kkFileView 内网 ARM 服务器全链路部署:从「找不到 office」到全绿通关(超详细排障实录)
运维·服务器
海宇数据42 分钟前
零信任架构实战:基于海宇车型识别精准构建自动化违章处理网关
运维·人工智能·架构·自动化
xbzb1 小时前
Linux SELinux 安全加固与标签排错手册
linux·运维·安全
箓维1 小时前
线程的优缺点,与进程的关联和差异
java·服务器·笔记
不会就选b1 小时前
Linux之http会话
服务器·网络协议·http
其实防守也摸鱼1 小时前
SQL注入实验笔记
android·运维·数据库·安全·oracle·自动化