即使LRANGE显示它有元素,Redis HGETALL也显示空数组

rjee0c15  于 2022-09-21  发布在  Redis
关注(0)|答案(2)|浏览(271)

如果存储值是散列字段中的列表类型,则HGETALL返回以下响应。

复制步骤如下:

连接到redis-cli,然后:

HSET user1 user2user1 []
LPUSH user2user1 "test1"
LPUSH user2user1 "test2"
LRANGE user2user1 0 -1 #> shows ["test2", "test1"]
HGETALL user1 #> shows "user2user1" "[]"

我原以为HGETALL将返回包含所有元素的所有数组。我已经检查了文档,但我找不到关于HSET存储列表的信息。

参考文献:https://redis.io/commands/hset/

muk1a3rh

muk1a3rh1#

您正在使用两个不同的密钥:

  • 名为user1的哈希
  • 名为user2user1的列表

您正在推送列表,因此散列保持不变。

此外,哈希是用来存储字符串的,没有您在提供的文档中看到的推送这样的东西。当您设置HSET user1 user2user1 []时,您正在将密钥user2user1设置为字符串[]

如果user2user1是唯一的字符串,这实际上不是问题,因为它使散列在这个“微不足道”的实现中毫无用处。

ftf50wuq

ftf50wuq2#

HSET存储键-值对。不能在关键点之间进行链接。您可能想看看RedisJSON模块,您可以在其中存储数组。

相关问题