我想在Redis中存储一堆json
{
"foo": "37",
"bar": "Alex",
"baz": "Tom",
"type": "test",
"date": "12/12/2012 12:12:12
}
但是来自sql背景,我不太清楚最好的方法是做什么:
SELECT * FROM table WHERE "foo" = "37" AND "baz" = "test" ORDER BY date DESC
我看过哈希,但我不清楚Redis能否像上面那样执行查询?
答案 0 :(得分:1)
使用Redis解决这个问题的方法是建立索引。例如,考虑以下流程" insert"将您的数据转换为哈希键并构建正确的索引:
HMSET somekeyname foo "37" bar "Alex" baz "Tom" type "test" date "12/12/2012 12:12:12"
SADD foo_index:37 somekeyname
SADD baz_index:test somekeyname
这将创建一个名为somekeyname
的HASH类型的密钥,其中包含相关数据。此外,它将创建/更新我们将用作索引的两个集合。现在,要获取与SQL select语句匹配的键,请执行以下操作:
SINTER foo_index:37 baz_index:test
这将返回满足条件的任何键名称。对结果进行排序可以在客户端进行,也可以用SINTERSTORE替换SINTER并使用Redis'目标密钥上的SORT命令。