首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >复杂数据结构Redis

复杂数据结构Redis
EN

Stack Overflow用户
提问于 2012-01-11 04:26:21
回答 3查看 46.7K关注 0票数 67

假设我有一个散列的散列,例如

$data = {
    'harry' : {
         'age' : 25,
         'weight' : 75,
    },
    'sally' : {
        'age' : 25,
        'weight' : 75,
    }
}

  1. 存储这种数据结构的“通常”方法是什么(或者您不会这样做?)
  2. 您是否能够直接获取值(例如,get harry : age?
  3. 存储后,您是否可以直接更改子键的值(例如,sally : weight = 100)
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-01-11 05:43:18

存储这种数据结构的“通常”方法是什么(或者你不会这样做?)

例如,harry和sally将分别存储在不同的hashes中,其中的字段将表示它们的属性,如年龄和体重。然后set结构将包含所有成员(哈里,萨利,...)你已经存储在redis里了。

你能直接得到一个值吗(例如,get harry : age ?)

可以,请参阅HGETHMGETHGETALL

权重一旦存储,您是否可以直接更改子键的值(例如,sally:

= 100)

可以,参见HSET

票数 39
EN

Stack Overflow用户

发布于 2013-08-14 16:52:57

让我们以我们必须以redis存储的复杂数据为例,例如:

  $data = { 
            "user:1"  : {
                       name : "sally",
                       password : "123"
                       logs : "25th october" "30th october" "12 sept",
                       friends : "34" , "24", "10"
                   } 
            "user:2"  :{
                       name : ""
                       password : "4567"
                       logs :
                       friends: ""
                   }
          }

我们面临的问题是好友和日志都是列表。因此,我们可以使用散列和列表来表示redis中的数据,如下所示:

选项 1.密钥为user:1和user:2的散列映射

      hmset user:1 name "sally" password "12344"
      hmset user:2 name "pally" password "232342"
      create separate list of logs as 
              logs:1 { here 1 is the user id }
              lpush logs:1 "" "" "" 
              lpush logs:2 "" "" ""
      and similarly for friends.

选项 2:将转储的json数据作为字符串编码的散列映射

      hmset user:1 name "sally" password "12344" logs "String_dumped_data" friends "string of dumped data"

选项 3:这是#1的另一种表示形式

      something like user:1:friends -> as a list 
      and            user:2:friends -> as a list 

如果我说错了,请纠正我。

票数 22
EN

Stack Overflow用户

发布于 2012-01-11 05:42:46

这取决于您想要做什么,但是如果您的数据结构不是嵌套得更深,并且需要访问每个字段,我建议您使用散列:http://redis.io/commands#hash

下面是对redis数据类型的一个很好的概述,每种数据类型都有正反两种:http://redis.io/topics/data-types

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8810036

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档