删除与模式匹配的 Redis 键

Sur*_*lvi 5 redis redis-cli redisclient

我使用 Redis 哈希集以以下格式存储数据:

hset b1.b2.b3 name test
Run Code Online (Sandbox Code Playgroud)

现在我想删除这个键,所以我使用以下格式:

del b1.b2.*
Run Code Online (Sandbox Code Playgroud)

但它不起作用,那么我如何使用模式删除 Redis 键呢?

小智 8

Redis 不提供任何批量删除键的方法。但是 redis-cli 和 xargs 可以用来实现您想要做的事情。请参阅下面的命令:

127.0.0.1:6379> hset b1.b2.b3 name test
(integer) 1
127.0.0.1:6379> hgetall b1.b2.b3
1) "name"
2) "test"
$ redis-cli --scan --pattern b1.b2.* | xargs redis-cli del
(integer) 1
$ redis-cli
127.0.0.1:6379> hgetall b1.b2.b3
(empty list or set)
Run Code Online (Sandbox Code Playgroud)

我们使用“--scan”扫描 redis 的模式,并使用 xargs 方法再次将输出提供给 redis-cli,该方法组合了扫描结果中的所有键,最后我们使用“del”命令删除所有键。