复杂的数据结构Redis

Xre*_*der 60 redis

可以说我有哈希哈希例如

$data = {
    'harry' : {
         'age' : 25,
         'weight' : 75,
    },
    'sally' : {
        'age' : 25,
        'weight' : 75,
    }
}
Run Code Online (Sandbox Code Playgroud)
  1. 存储这种数据结构的"通常"方式是什么(或者不是吗?)
  2. 你能直接得到一个价值(例如得到哈里:年龄?
  3. 存储后,您可以直接更改子键的值(例如,sally:weight = 100)

yoj*_*o87 31

存储这种数据结构的"通常"方式是什么(或者不是吗?)

例如,harry和sally将分别存储在单独的哈希中,其中字段将表示其属性,如年龄和体重.然后设置结构将保存您存储在redis中的所有成员(harry,sally,...).

你能直接得到一个价值(例如得到哈里:年龄?)

是的,请参阅HGETHMGETHGETALL.

存储后,您可以直接更改子键的值(例如,sally:weight = 100)

是的,请参阅HSET.

  • 谢谢 - 所以它必须存储在多个操作中?例如,我无法一次性存储数据结构?显然,这只是一个相当简单的例子,想要存储更复杂的"对象",也许我不理解这是否是正确的方法? (2认同)
  • 您也可以在[Lua](http://redis.io/commands/eval)中编写自己的脚本;应用程序可以像发送EVAL查询一样发送Lua脚本,它将在Redis服务器上执行,使您的Lua脚本可以运行多个Redis命令,而无需通过网络进行多次往返。 (2认同)

小智 19

让我们来一个复杂的数据,我们必须存储在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: ""
                   }
          }
Run Code Online (Sandbox Code Playgroud)

我们面临的问题是朋友和日志是列表.那么我们在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.
Run Code Online (Sandbox Code Playgroud)

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

      hmset user:1 name "sally" password "12344" logs "String_dumped_data" friends "string of dumped data"
Run Code Online (Sandbox Code Playgroud)

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

      something like user:1:friends -> as a list 
      and            user:2:friends -> as a list 
Run Code Online (Sandbox Code Playgroud)

如果我错了,请纠正我.