11

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

Hash         Key    Value
hashme:1    Hello   World
hashme:2    Here    Iam
myhash:1    Next    One

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

hashme
myhash

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

 hashme:1
 hashme:2
 myhash:1

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

有什么建议么 ?

4

5 回答 5

8

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

更新:

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

SCAN 0 TYPE hash

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

于 2016-12-14T07:55:10.103 回答
5
keys * 

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

于 2019-08-20T09:26:15.547 回答
2

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

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

于 2016-12-14T07:37:07.620 回答
1

connection.keys('*') 这将带来所有键,而与数据类型无关,因为 redis 中的所有内容都存储为键值格式

于 2018-07-30T17:56:42.760 回答
0

对于 python 中的 redis,您可以使用以下命令从 redis db 中检索密钥

def standardize_list(bytelist):
    return [x.decode('utf-8') for x in bytelist]

>>> standardize_list(r.keys())
['hat:1236154736', 'hat:56854717', 'hat:1326692461']

这里r变量是redis连接对象

于 2021-01-12T12:53:35.573 回答