在redis中存储复杂数据

时间:2015-06-25 06:07:14

标签: ruby-on-rails redis

我最近开始使用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"和"身高"。

2 个答案:

答案 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是你需要的答案。