Php redis json sql风格查询
我有一堆json要存储在Redis中Php redis json sql风格查询,php,json,redis,Php,Json,Redis,我有一堆json要存储在Redis中 { "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
{
"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是否能够像上面那样执行查询?使用Redis实现这一点的方法是建立索引。例如,考虑以下流程将“数据”插入到哈希键中,并建立适当的索引:
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
的哈希类型的键,其中包含相关数据。此外,它将创建/更新两个集合,我们将它们用作索引。现在,要获取与SQL select语句匹配的键,请执行以下操作:
SINTER foo_index:37 baz_index:test
这将返回满足条件的任何键名称。排序结果可以在客户端完成,或者用SINTERSTORE替换SINTER,并在目标键上使用Redis的SORT命令。不,您不能按字段搜索,因为Redis将数据存储为key=>value,其中key类似于id或hash,value是any。您只能通过密钥获取数据。Redis不是RDBMS,Redis是NoSQL存储。建议您使用MongoDB执行此操作。@num8er顺便说一句,MongoDB不是RDBMS,也是NoSQL。我知道,但它有在json数据中搜索的方法。我还知道,我可以通过将此字段存储为键来建立关系,以获取指向redis中完整json数据的值。但为什么要这样做呢?为什么要这么复杂?