复杂的数据结构Redis

比方说,我有散列的散列,例如

$data = { 'harry' : { 'age' : 25, 'weight' : 75, }, 'sally' : { 'age' : 25, 'weight' : 75, } } 
  1. 存储这样一个数据结构的“常规”方式是什么(或者你不会?)
  2. 你会直接得到一个价值吗(例如:哈利:年龄?
  3. 一旦存储,你可以直接改变一个子键的值(例如sally:weight = 100)

存储这样一个数据结构的“常规”方式是什么(或者你不会?)

例如,哈利和莎莉将被存储在每个单独的哈希 ,其中字段将代表其性质,如年龄和体重。 然后设置结构将保存你已经存储在redis中的所有成员(harry,sally,…)。

你能直接得到一个价值吗(比如:哈利:年龄?)

是的,请参阅HGET或HMGET或HGETALL 。

一旦存储,你可以直接改变一个子键的值(例如sally:weight = 100)

是的,看HSET 。

让我们拿一个复杂的数据,我们必须存储在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.密钥为用户:1和用户: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数据转储为string编码的哈希映射

  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 

请纠正我,如果我错了。

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

下面是对redis数据types的一个很好的概述,每个都有pro和contra: http : //redis.io/topics/data-types