假设我有哈希哈希,例如
$data = {
'harry' : {
'age' : 25,
'weight' : 75,
},
'sally' : {
'age' : 25,
'weight' : 75,
}
}
答案 0 :(得分:28)
存储这种数据结构的“通常”方式是什么(或者会 你不是吗?)
例如,harry和sally将分别存储在单独的hashes中,其中字段将代表其属性,如年龄和体重。然后set结构会保存你在redis中存储的所有成员(哈里,莎莉,......)。
你能直接获得一个价值(例如得到哈里:年龄?)
存储后,您可以直接更改子密钥的值(例如 莎莉:体重= 100)
是的,请参阅HSET。
答案 1 :(得分:16)
让我们把我们必须存储的复杂数据存储在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数据作为字符串编码的哈希映射
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
如果我错了,请纠正我。
答案 2 :(得分:3)
取决于您想要做什么,但如果您的数据结构没有更深层次嵌套并且您需要访问每个字段,我建议使用哈希:http://redis.io/commands#hash
以下是对redis数据类型的一个很好的概述,每个都有pro和contra:http://redis.io/topics/data-types