redis json sql样式查询

时间:2014-06-10 12:38:40

标签: php json redis

我想在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能否像上面那样执行查询?

1 个答案:

答案 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命令。