【问题标题】:DELTE Redis key with Pattern删除带模式的 Redis 键
【发布时间】:2021-01-31 19:32:37
【问题描述】:

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

hset b1.b2.b3 name test

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

del b1.b2.*

但它不起作用所以我如何使用模式删除 Redis 键?

【问题讨论】:

标签: redis redis-cli redisclient


【解决方案1】:

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)

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

【讨论】:

  • 我们如何使用 Redis 节点 js 模块实现这一点。
  • 请接受答案或编辑您的问题。它并不是说你必须在 nodejs 中实现这个
【解决方案2】:

您可以使用上面@Ankit 回答的模式来做到这一点。

你可以做一个SCAN 然后删除键直到什么都不剩(光标为0)

https://redis.io/commands/scan

【讨论】: