Windows 10环境下Redis按Get*模式删除Key的解决方案求助
Windows 10下删除Redis中匹配Get*模式Key的可行方案
方案1:用PowerShell替代xargs(适合少量Key)
Windows CMD不支持xargs,但PowerShell可以实现类似管道处理逻辑。打开PowerShell,切换到Redis安装目录后执行:
# 先查看匹配的Key,确认无误后再执行删除 redis-cli --scan --pattern Get* # 执行删除 redis-cli --scan --pattern Get* | ForEach-Object { redis-cli del $_ }
也可以用简写形式:
redis-cli --scan --pattern Get* | % { redis-cli del $_ }
方案2:使用Redis Lua脚本(高效,适合大量Key)
Lua脚本在Redis服务端批量处理,避免客户端与服务器频繁通信,性能更优。打开redis-cli客户端,直接粘贴执行以下脚本:
local cursor = "0" repeat local result = redis.call("SCAN", cursor, "MATCH", "Get*", "COUNT", 100) cursor = result[1] local keys = result[2] if #keys > 0 then redis.call("DEL", unpack(keys)) end until cursor == "0"
注:COUNT参数可根据实际Key数量调整(比如设为1000),加快扫描效率。
方案3:直接用DEL命令配合KEYS(仅适用于测试环境或Key极少场景)
若Redis实例Key数量少,不会因KEYS命令阻塞服务,可直接列出所有匹配Key执行删除:
在redis-cli内执行:
127.0.0.1:6379> DEL GetLeftMen:28.10.50.154 GetLeftMenu|28.10.50.156 GetLeftMenu|28.30.60.146 GetLeftMenu|28.30.50.146 GetLeftMenu|28.30.50.156 GetLeftMen:28.10.50.155 GetLeftMen:28.10.50.156
或在CMD中执行:
redis-cli DEL GetLeftMen:28.10.50.154 GetLeftMenu|28.10.50.156 GetLeftMenu|28.30.60.146 GetLeftMenu|28.30.50.146 GetLeftMenu|28.30.50.156 GetLeftMen:28.10.50.155 GetLeftMen:28.10.50.156
⚠️ 注意:KEYS命令会遍历所有Key,生产环境Key数量大时会导致Redis阻塞,不建议使用。
之前命令报错原因说明
sscan --pattern Get* | xargs -del:sscan需指定初始游标(值为0),且Redis客户端内无法直接使用Shell管道和xargs命令,需在CMD/PowerShell环境执行。scan --pattern Get:*:缺少初始游标参数,正确格式为SCAN 0 MATCH Get* COUNT 100。xargs报错:Windows CMD默认不自带xargs工具,需用PowerShell的替代语法实现批量处理。
内容的提问来源于stack exchange,提问作者jrsometing
相关产品推荐
相关产品推荐

