我正在尝试删除一堆与redis-cli
前缀匹配的键。
我一直在研究如何在网上做到这一点,我看到的最常见的建议是直接从命令行执行,就像这样:$ redis-cli [options] KEYS "prefix:*" | xargs redis-cli [options] DEL
个
但是,我更喜欢在redis-cli
工具内部执行此操作,这样我就不必在每次删除匹配模式的密钥时都在redis-cli
命令中传递主机名、端口和auth参数。到目前为止,我已经尝试过:
DEL "prefix:*"
个DEL KEYS prefix:*
个DEL KEYS "prefix:*"
个KEYS "prefix:*" | DEL
个KEYS "prefix:*" DEL
个
有没有办法删除redis-cli
工具中 within 前缀下的所有键?命令行是唯一的方法吗?
如果你想让我澄清更多,请随时发表评论。
3条答案
按热度按时间bweufnob1#
在redis-boot中运行以下命令:
字符串
将
prefix:*
替换为您需要的模式。输出将是删除的键的数量。5lwkijsr2#
你可以写一个lua脚本来删除键。
字符串
保存这个文件在本地作为delete.lua并运行它,如下所示:
型
这个“$(cat delete.lua)”只是把我们的脚本变成了一个带引号的参数。重要的是返回的数字(十六进制)。它是脚本的SHA1签名。我们可以使用它来调用脚本,在redis-script中使用EVALSHA命令,如下所示:
型
l0oc07j23#
在
spring-data-redis-2.7.16
中使用RedisCacheWriter.clean(cacheName, keyPattern)
,即使用SCAN(10/20) + DEL(allMatchKeys)
redis命令。字符串