我最近开始使用redis(在轨道上使用ruby),我想知道存储此类数据的最佳方法是什么。
data1 = {
'name2' : {
'age' : xxx,
'height' : xxx,
},
'name2' : {
'age' : xxx,
'weight' : xxx,
}
}
data2 = {
'class1' : {
'num' : xxx,
'location' : xxx,
'teacher' : xxx,
},
'class2' : {
'num' : xxx,
'location' : xxx,
'teacher' : xxx,
}
}
我已尝试使用哈希映射(hset,hmset,hget,hmget)命令,但它们似乎不能使用子键,例如" age"和"身高"。
答案 0 :(得分:5)
您似乎正在尝试在Redis中存储一些JSON。使用redis-rb gem,这样做非常简单。例如,您可以执行以下操作:
data = JSON.parse(redis.get("key"))
然后当你想要检索这些数据时,我会做这样的事情:
try: True, False
except NameError: True = 1==1; False = 1==0
这将使用名为" key"的密钥检索存储在Redis中的JSON对象,然后将其解析为Ruby哈希。我希望这有帮助!
答案 1 :(得分:3)
在Redis哈希中,您无法直接存储嵌套元素,这就是您遇到这些错误的原因。
如果您希望能够直接访问data1.name1或data2.class2之类的项目,那么使用哈希是正确的。要存储它们,您可以将data1.name1中的所有内容都放在json:
HSET data1 name1 {'num' : xxx,'location' : xxx,'teacher' : xxx,}
并加载数据:
HGET data1 name1
但是如果你不想直接加载这些字段,你可以加载data1或data2中的所有内容,那么vaughanj是你需要的答案。