获取redis中存在的所有哈希值

oha*_*nho 9 redis redis-cli

我在 redis 缓存中有哈希值,例如:

Hash         Key    Value
hashme:1    Hello   World
hashme:2    Here    Iam
myhash:1    Next    One
Run Code Online (Sandbox Code Playgroud)

我的目标是将哈希作为 CLI 中的输出,例如:

hashme
myhash
Run Code Online (Sandbox Code Playgroud)

如果没有这样的选项,这也可以:

 hashme:1
 hashme:2
 myhash:1
Run Code Online (Sandbox Code Playgroud)

我在 Redis API 中没有找到任何相关的命令。

有什么建议 ?

for*_*ack 6

您可以使用该SCAN命令从 Redis 获取所有密钥。然后对于每个键,使用该TYPE命令检查它是否是一个散列。

更新:

在 Redis 6.0 中,该SCAN命令支持TYPE子命令,您可以使用该子命令扫描指定类型的所有键:

SCAN 0 TYPE hash
Run Code Online (Sandbox Code Playgroud)

也不要KEYS在生产环境中使用命令!!!这是一个危险的命令,可能会长时间阻塞 Redis。

  • 你能进一步解释一下我需要执行的命令集是什么吗? (2认同)

小智 6

keys * 
Run Code Online (Sandbox Code Playgroud)

是为我工作。你可以试试看。


Pas*_*rer 3

Redis(以及其他 K/v 存储)的想法是为您构建索引。数据库不会为你做这件事。这是与关系数据库的一个主要区别,有助于提高性能。

因此,当您的应用程序创建哈希时,请将其密钥放入 SET 中。当您的应用删除哈希时,请从 SET 中删除其密钥。然后要获取哈希 ID 列表,只需使用 SMEMBERS 获取 SET 的内容即可。

  • 这不是一个解决方法,而是你必须如何做。您负责构建和管理您自己的索引,通常使用 SET - 因此,如果您需要能够检索与您的应用程序相关的某种类型的所有哈希(例如用户),您需要保留一个名为 users 的 SET,您可以在其中添加/根据需要删除您的 HASH 键 (2认同)