在Redis中将值设置为一个值

时间:2017-08-23 07:52:03

标签: redis

我有一个包含字段和值的键。所有字段都有字符串值。 其中一个字段我希望它是一个表或集合或列表(意味着保存多个值)。该字段称为 zonetable 我只知道如何使用hset但据我所知它不能做我想要的。我想做那样的事情

  

hmset L0001:ad65ed38-66b0-46b4-955c-9ff4304e5c1a field1 blabla field2 blibli zonetable [1,2,3,4]

Key : L0001:ad65ed38-66b0-46b4-955c-9ff4304e5c1a
field1: "string value"
field2: "string value"
zonetable: [1,2,3,4]   ---- the table

2 个答案:

答案 0 :(得分:1)

也许你可以利用Json。使用json将您的表(列表或其他内容)序列化为json字符串,然后使用hset将其保存到redis中。

当你想要检索它时,首先从redis获取它,然后将它从json反序列化为list。

如果你使用python,你可以这样做:

 table = json.dumps(zonetable)
 redis.hset(Key, 'zonetable', table)

当你想要检索它时:

table = redis.hget(Key, 'zonetable')
zonetable = json.loads(table)

正如你所说,你使用native命令,你也可以这样做。

首先,使用python interpreter

将zonetable转换为json字符串
>>> import json
>>> table = [1,2,3,4]
>>> json.dumps(table)
'[1, 2, 3, 4]'

然后在redis-cli中使用它

hmset L0001:ad65ed38-66b0-46b4-955c-9ff4304e5c1a field1 blabla field2 blibli zonetable '[1,2,3,4]'

是的,还有一件事我想说,如果你知道rule of how to convert object to json,你可以自己做。

答案 1 :(得分:0)

您可以使用SADD

  

将指定的成员添加到key中存储的集合中。已经是此集合成员的指定成员将被忽略。如果key不存在,则在添加指定成员之前会创建一个新集。

     

当key中存储的值不是set时,会返回错误。

示例:

SADD YOUR_KEY "test1"
SADD YOUR_KEY "test2"

SMEMBERS YOUR_KEY 

输出:

  

TEST1
  TEST2

您还可以使用HMSET

HMSET YOUR_KEY field1 "Hello" field2 "World"

HGET myhash

输出:

  

您好   世界