可以说我有散列的哈希例如复杂的数据结构Redis
$data = {
'harry' : {
'age' : 25,
'weight' : 75,
},
'sally' : {
'age' : 25,
'weight' : 75,
}
}
- 会是什么
- 你可以直接获得一个值(“平常”的方式来存储这种数据结构如让哈利(或者你不想?):年龄
- 一旦存储你能不能直接更改子键的值(例如莎莉:体重= 100)
可以说我有散列的哈希例如复杂的数据结构Redis
$data = {
'harry' : {
'age' : 25,
'weight' : 75,
},
'sally' : {
'age' : 25,
'weight' : 75,
}
}
会是什么“平常”的方式来存储这种数据结构(或会 你不?)
例如哈利和莎莉将分别存储在每个单独的hashes其中字段将代表其性能如年龄和体重。然后set结构会保存你存储在redis中的所有成员(harry,sally,...)。
你可以直接获得一个值(例如获得哈利?年龄)
一旦存储你能直接改变一个子密钥的值(例如 萨利:重量= 100)
是的,见HSET。
谢谢 - 所以它将不得不被存储在多个操作?例如我无法一次存储数据结构?显然,这只是一个相当平凡的例子,它希望存储更复杂的“对象”,并且可能不了解这是否是正确的选择? – Xrender 2012-01-11 08:55:31
整个redis基于其高级数据结构之间的简单操作。你可以试着看[ohm](http://ohm.keyvalue.org/),它可能会为你抽象一些东西。 – yojimbo87 2012-01-11 09:06:13
您也可以在[Lua](http://redis.io/commands/eval)中编写自己的脚本;应用程序可以发送一个Lua脚本,就像它是一个EVAL查询一样,它将在Redis服务器上执行,让您的Lua脚本在网络上运行多个Redis命令而无需多次往返。 – ekillaby 2013-03-25 02:54:40
取决于你想要做什么,但如果你的数据结构是不深的嵌套,你需要访问的每个字段,我会建议使用散列:http://redis.io/commands#hash
这里是在Redis的数据类型的一个很好的概述,每个亲和禁忌:http://redis.io/topics/data-types
让我们,我们在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
请纠正我,如果我错了。
作为Redis的入门者,这些都是我能想到的解决方案。但更进一步的考虑是查询。 假设您需要获取所有拥有“24”作为“朋友”的用户的所有日志。 在案例1中,您必须阅读所有朋友列表并收集用户标识,然后获取所有日志。 (=强制性往返) 在案例2中,我不知道redis是否有能力查询转储的json数据。性能会是什么。 并添加第三种情况可以说“朋友”是一个更加常量的数据类型,如“权利” 这样的结构会使感觉? user:21:friends:23-43-12 - > as列表 – 2014-10-23 10:37:44
对于这种情况,我们可以使用EVAL命令进行内部lua处理 – 2017-11-29 15:14:28
另外我们如何在Redis中对这些数据进行排序?就像我想要名列前茅10名的人一样,他们的体重最重。 – Bharat 2017-04-28 12:39:42