Redis 本身不支持。我们对Redis的源码进行了修改,使其支持全文搜索、字符串搜索,以及一些求和和平均的计算。
项目主页:http://oncedb.com
全文搜索
OnceDB支持直接搜索,支持String和Hash等对象,
搜索字符串:搜索模式运算符值
使用搜索命令
# Create data
set test1 'this is testing'
> OK
set test2 'this is article'
> OK
# Search data
search test* ~ article
1) test1
2) this is testing
3) test2
4) this is article
运营商支持:
= Exact match
~ Partial match
> >= < <= Compare match
搜索哈希:hsearch 模式字段运算符值...
使用 hsearch 命令
redis中没有“表”的概念。通常,使用 schema:id 的键名包括表名和主键。例如,user:001 是一个哈希对象,有一张用户表,主键值为 001。
# Create hash data
hmset user:001 name kris email c2u@live.cn gender male age 16
> OK
hmset user:002 name sunny age 24
> OK
# Search hash data
hsearch user:* age > 18 name = *
1) user:002
2) 24
3) sunny
搜索有序列表(zset): zhsearch key from to schema field operator value ...
直接使用test:*或者user:*模式匹配,因为会遍历所有key,性能低。 zhsearch可以在有序列表中搜索对应的主键,并指定搜索范围。
在上面的例子中,我们将user的主键值存储到*user有序列表中,分数是关于时间的整数
zadd *user 20020201 001 20020202 002
搜索第一个匹配的数据(从0到0)
zhsearch *user 0 0 user: age > 10
1) -1
2) user:001
3) 16
使用全文搜索时,返回的第一个参数始终为-1。
OnceDB 不会改变 Redis 的数据存储结构。 Redis数据库文件可以直接在OnceDB中操作,然后返回Redis使用。
索引查询
全文搜索的性能很差。您可以通过创建索引来提高性能。
OnceDB 可以选择在数据修改时自动创建辅助索引。
详细信息可以参考这个答案
Redis and Querying Values