我想将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中存储以下多个哈希数据。怎么做?
hmset key val1 [["1", "2"], ["3", "4"]] val2 [["a", "b"], ["c", "d"]]
答案 0 :(得分:0)
哈希中的每个字段(val)都可以包含单个字符串值。要查看(第二个)成功命令的结果,只需在密钥上使用HEGETALL
:
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} })各自的价值观。
同样,对于第3个陈述:
[[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>