Heim > Fragen und Antworten > Hauptteil
有如下场景,key:A,B,C,准备将他们的组合做key:
A: 1
B: 2
C: 3
AB: 4
AC: 5
BC: 6
ABC: 7
我想询匹配次数最多的key,比如我想查找A,C那么,排序后的结果:
AC
ABC
A
C
这样的在redis里怎么排序查找啊?还是我的设计就有问题啊?请教。
ringa_lee2017-04-24 09:15:17
Redis 是轻查询的 NoSQL ,除了基于键名的查询,几乎没有其他的查询方式,不适合使用 Redis 做重查询的数据库,如果需要丰富的查询,建议使用 MongoDb , 相比较而言 Redis 更适合高速读写,没有过多逻辑依赖的缓存系统。
另外,你这个需求,可以把参与排序的数据放到同一个 hash 里,使用时读出所有数据,再在程序中进行排序。不过这只是个折衷的办法。
迷茫2017-04-24 09:15:17
使用redis内置的sortset类型存储数据吧,它支持sorce下标 相当于索引 有强大的查询 排序 范围查询能力 具体可以看redis关于sortset类型的文档
高洛峰2017-04-24 09:15:17
Redis只支持一种模糊查询,那就是keys,根据关键字进行查询,其他的任何数据结构都不支持,所以你的需求单纯的通过Redis肯定是无法实现的。可以考虑其他NoSql产品,或者通过建立索引来实现。