redis有5种数据类型,分别是String,List,Hash,set,zset 。
5种数据类型显然支持分页排序的只有两种 List和zset。
1.使用List分页(不推荐):
- 使用命令:LPUSH 集合名字 值
127.0.0.1:6379> lpush testList redis (integer) 1 127.0.0.1:6379> lpush testList mongdb (integer) 2 127.0.0.1:6379> lpush testList mysql (integer) 3 127.0.0.1:6379> lpush testList postgresql (integer) 4 127.0.0.1:6379> lpush testList orcale (integer) 5 127.0.0.1:6379> lpush testList sqlLite (integer) 6 127.0.0.1:6379> lpush testList sqlServer
2.使用命令分页:lrange 集合名 开始 结束
127.0.0.1:6379> lrange testList 0 2 1) "sqlServer" 2) "sqlLite" 3) "orcale"
3.获取集合中总条数:
127.0.0.1:6379> llen testList (integer) 7 127.0.0.1:6379>
-
使用Zset进行分页:
参考:https://www.jianshu.com/p/6e1c17ad410d
-
使用zadd 集合名字 key value
127.0.0.1:6379> zadd test2 56 xyh (integer) 1 127.0.0.1:6379> zadd test2 23 lt (integer) 1 127.0.0.1:6379> zadd test2 32 lj (integer) 1 127.0.0.1:6379> zadd test2 78 zhoumei
2.使用zrevrange 命令进行分页:zrevrange 需要分页的集合名字 开始 结束
127.0.0.1:6379> zrevrange test2 0 2 1) "cha" 2) "zhoumei" 3) "xyh"
3.获取zset集合中的长度。
127.0.0.1:6379> zcard test2 (integer) 11 127.0.0.1:6379>
-
业务
-
使用redis模糊查询:使用redis 模糊查询,建议还是使用String数据结构来使用。可以直接根据keys pattern 命令进行直接查询。使用举例(keys ‘*花*’)
-
使用redis全部查询份分页 :使用zset进行分页
-
使用redis模糊查询加分页
-
个人建议,这个还是用代码做吧。
-
提供下个人思路:
- 首先在设置zset Key 时就要考虑到条件。
- 一次性获取全部数据,存入集合,最好是有序链条,使用代码contains 方法判断条件是否包含在key中,不在key中就从集合中移除。
-
然后根据下标进行分页
-
-
-
-