// 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
module.exports.redisDel = function(key) {
console.log("del started for key: ", key);
var Redis = require("ioredis");
var redis = new Redis({
port: 6379, // Redis port
host: "192.168.93.27", // Redis host
family: 4, // 4 (IPv4) or 6 (IPv6)
password: "SetCorrectPassword"
});
return new Promise((resolve, reject) => {
var stream = redis.scanStream({
// only returns keys following the pattern of "key"
match: key,
// returns approximately 100 elements per call
count: 100
});
stream.on('data', function (resultKeys) {
if (resultKeys.length) {
console.log(resultKeys)
redis.del(resultKeys); //from version 4 use unlink instead of del
}
else {
console.log("nothing found");
}
});
stream.on('end', function (resultKeys) {
console.log("end");
resolve()
})
})
7条答案
按热度按时间ohtdti5x1#
使用
redis-cli
工具,可以执行以下操作:nwsw7zdq2#
从redis 2.6.0开始,您可以使用LUA脚本。
应该在
SCAN
上使用此变体|XARGS
变体,因为它的速度要快得多。下面的脚本也适用于大量的键。
1.打开你的redis-cli
1.将somePattern替换为您的模式,例如
*cars*
(记住它不是正则表达式)wwtsj6pe3#
没有内置的命令来实现这个目的,你必须使用
SCAN
命令来获取所有与模式匹配的键,然后使用DEL
命令来删除这些键。另一个解决方案是使用
HASH
来保存以下模式的密钥:j2qf4p5b4#
shell :
redis-cli -n 1 --scan --pattern prefix:* | xargs redis-cli -n 1 del
iszxjhcz5#
将所有要删除的密钥放入keylist.txt文件中,然后:
nfg76nw06#
对于Windows cmd.exe命令解释器,请使用
FOR
和/F:如果启用了反引号命令(不太可能),则可能需要使用反引号而不是撇号。
来源:
FOR /?
7uzetpgm7#
有几种方法可以做到这一点。
1.不建议在生产服务器上使用https://gist.github.com/ddre54/0a4751676272e0da8186,因为它使用KEYS关键字
1.使用ioredis(https://github.com/luin/ioredis#streamify-scanning),它支持Redis〉= 2.6.12和(Node.js〉= 6)
如果你想按照第二个例子只是做以下步骤:
1.安装节点js〉= 6
1.创建文件夹,并通过运行以下命令在其中安装ioredis:
npm安装ioredis
1.在该文件夹中创建包含以下内容的redis.js文件
}
1.通过传递所需的键(在我们的示例中为yourKey *)来运行脚本
节点-e '需要(./redis). redisDel(您的密钥 *)'