关于Rails上的ruby:在Redis中存储复杂数据

 2021-04-09 

Storing complex data in redis

我最近开始使用redis(在ruby上运行),我想知道什么是存储此类数据的最佳方法。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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"和" height"之类的子键一起使用。


您似乎正在尝试在Redis中存储一些JSON。使用redis-rb gem可以很简单地做到这一点。例如,您可以执行以下操作:

1
2
redis = Redis.new
redis.set("key", data1)

然后,当您想检索此数据时,我将执行以下操作:

1
data = JSON.parse(redis.get("key"))

这将使用名为" key"的键检索您存储在Redis中的JSON对象,然后将其解析为Ruby哈希。希望对您有所帮助!


在Redis哈希中,您不能直接存储嵌套元素,这就是为什么会出现这些错误的原因。
如果您希望能够直接访问诸如data1.name1或data2.class2之类的项目,那么使用散列是正确的选择。并存储它们,您可以将所有内容作为json放在data1.name1中:

1
HSET data1 name1 {'num' : xxx,'location' : xxx,'teacher' : xxx,}

并加载数据将是:

1
HGET data1 name1

但是如果您不想直接加载这些字段并且可以加载data1或data2内部的所有内容,那么您需要vaughanj回答。