我在CentOS中安装了Redis,我有多个这样的Redis键:
Product:<id>:<url>
如何使用CLI删除所有的Product:*:*
?
Redis版本:3.2.4 [我猜是最新版]
谢谢!
我在CentOS中安装了Redis,我有多个这样的Redis键:
Product:<id>:<url>
如何使用CLI删除所有的Product:*:*
?
Redis版本:3.2.4 [我猜是最新版]
谢谢!
使用redis-cli
工具,您可以执行以下操作:
redis-cli --scan --pattern 'Product:*:*' | xargs redis-cli DEL
redis-cli keys '*' | grep Product | xargs -i redis-cli del {}
- kakoma-u
参数选择服务器,使用 -n
参数选择数据库,例如 redis-cli -u redis://redisserver:6379 -n 1 --scan --pattern 'Product:*:*'
。 - OzzyCzech(error) CROSSSLOT Keys in request don't hash to the same slot
的错误。我正在使用以下命令从集群中删除模式为hi*
的键:redis-cli -u redis://localhost:6379 --scan --pattern 'hi*' | xargs redis-cli -u redis://localhost:6379 DEL
。 - roottraveller从redis 2.6.0开始,你可以使用LUA脚本。
相较于 SCAN
| XARGS
变体,你应该使用这个变体,因为它速度更快。
以下脚本也适用于大量的键。
redis-cli -p somePort -a somePassword
*汽车*
(请记住这不是正则表达式)EVAL "for _,k in ipairs(redis.call('keys','somePattern')) do redis.call('del',k) end" 0
没有内置命令可以直接完成这个操作。您需要使用SCAN
命令获取与模式匹配的所有键,然后使用DEL
命令删除这些键。
// scan from cursor 0 to get the next cursor and keys
SCAN 0 match Product:*:*
// next_cursor, Product:x1:y1, Product:x2:y2, ...
DEL Product:x1:y1 Product:x2:y2 ...
// scan from the next cursor until it return 0
SCAN next_cursor match Product:*:*
HASH
存储这种模式的键:// set key value
HSET Products Product:<id>:<url> value
// remove a single key
HDEL Products Product:<id>:<url>
// remove all keys
DEL Products
-n <db> Database number
Shell命令: redis-cli -n 1 --scan --pattern prefix:* | xargs redis-cli -n 1 del
将想要删除的所有键放入keylist.txt文件中,然后执行以下操作:
cat keylist.txt | while read rediskey; do echo "Deleting $rediskey" && redis-cli -c -h 'hostname' -p XXXX -a 'XXXXXX' UNLINK $rediskey; done
有几种方法可以做到这一点。
如果您想遵循第二个示例,请执行以下步骤:
安装 node js >=6node -e 'require(\"./redis\").redisDel(\"yourKey*\")'
可以用于Redis数据库中删除所有以 "yourKey" 开头的键。FOR
。FOR /F %I IN ('redis-cli KEYS Product:*:*') DO redis-cli DEL %I
如果您启用了反引号命令(不太可能),则可能需要使用反引号而不是撇号。
来源:FOR /?
redis-cli -a {password} --scan --pattern "*{your pattern}*" -h {hostip} -p {port}| xargs redis-cli -a {password} -h {hostip} -p {port} del