复杂的数据结构Redis
比方说,我有散列的散列,例如
$data = { 'harry' : { 'age' : 25, 'weight' : 75, }, 'sally' : { 'age' : 25, 'weight' : 75, } }
- 存储这样一个数据结构的“常规”方式是什么(或者你不会?)
- 你会直接得到一个价值吗(例如:哈利:年龄?
- 一旦存储,你可以直接改变一个子键的值(例如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