gpt4 book ai didi

redis - 在哈希键中存储数组值会引发错误

转载 作者:可可西里 更新时间:2023-11-01 11:38:33 41 4
gpt4 key购买 nike

我想将数组的数组作为散列键存储在redis中。但它抛出以下错误MSET 正在运行。为什么 HSET 不起作用?

127.0.0.1:6379> hset key val1 [[x, y], [z, w]] 
(error) ERR wrong number of arguments for 'hset' command
127.0.0.1:6379> hmset key val1 [[x, y], [z, w]] val2 [[1,2], [3,4]]
OK

如何将上面的值存储到特定键的redis中?

还有

127.0.0.1:6379> hmset key val1 [[1, 2], [3, 4]] val2 [[a, b], [c, d]] 
OK
127.0.0.1:6379> hmset key val1 [["1", "2"], ["3", "4"]] val2 [["a", "b"], ["c", "d"]]
Invalid argument(s)

如果数组中有字符串符号,为什么会抛出无效参数错误?

我想在redis中存储如下多个hash数据。怎么做?

hmset key val1 [["1", "2"], ["3", "4"]] val2 [["a", "b"], ["c", "d"]]

最佳答案

哈希中的每个字段 (val) 都可以包含一个字符串值。要查看(第二个)成功命令的结果,只需使用 HEGETALL在你的 key 上:

127.0.0.1:6379> hmset key val1 [[x, y], [z, w]] val2 [[1,2], [3,4]]
OK
127.0.0.1:6379> hgetall key
1) "val1"
2) "[[x,"
3) "y],"
4) "[z,"
5) "w]]"
6) "val2"
7) "[[1,2],"
8) "[3,4]]"

你可以清楚地看到,由于空格是HSET的分隔符,你实际上创建了四个字段(val1, y], , w]][[1,2],) 及其各自的值。

同样,对于第三条语句:

127.0.0.1:6379> hmset key val1 [[1, 2], [3, 4]] val2 [[a, b], [c, d]] 
OK
127.0.0.1:6379> hgetall key
1) "val1"
2) "[[1,"
3) "2],"
4) "[3,"
5) "4]]"
6) "val2"
7) "[[a,"
8) "b],"
9) "[c,"
10) "d]]"
127.0.0.1:6379>

看起来好像您想将数组存储在单个哈希字段中。您只能以这种方式存储数组的字符串表示形式(即您将无法访问数组中的特定元素),如下所示:

127.0.0.1:6379> hmset key val1 "[[1, 2], [3, 4]]" val2 "[[\"a\", \"b\"], [\"c\", \"d\"]]"
OK
127.0.0.1:6379> hgetall key
1) "val1"
2) "[[1, 2], [3, 4]]"
3) "val2"
4) "[[\"a\", \"b\"], [\"c\", \"d\"]]"

关于redis - 在哈希键中存储数组值会引发错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27600790/

41 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com