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回答。