利用redis的Sorted Set实现分页

利用redis的Sorted Set实现分页

redis命令:

ZADD key score member [[score member] [score member] ...]
ZRANGE key start stop [WITHSCORES]

练习下redis ZADD ZRANGE命令:

redis> ZADD myzset 1 "one"
(integer) 1redis> ZADD myzset 2 "two"
(integer) 1redis> ZADD myzset 3 "three"
(integer) 1redis> ZRANGE myzset 0 -1
1) "one"
2) "two"
3) "three"redis> ZRANGE myzset 2 3
1) "three"redis> ZRANGE myzset -2 -1
1) "two"
2) "three"redis>

如果明白了 这两个命令的含义,实际上分页的原理就已经弄明白了。

现在的场景是:
要进行分页的数据是以json的格式写在hdfs上的,每条记录中有createtime这个字段(2013-02-19 01:23:50),将其变成10位的时间戳,把时间戳作为score,就可以按照时间从早到晚来排列,start stop参数决定着分页的大小!

java客户端jedis对应的方法:

读取:

Set set = jedis.zrange("tv-videos_102599699", 0, 9);
for (Object str : set) {
     System.out.println(str);
}

返回的是有序的LinkedHashSet,而不是hashset

批量写入,而不是单条写入:

Pipeline pipeline = RedisCon.getJeidsConForPipLine();//getJeidsConForPipLine自定义函数
pipeline.zadd("tv-videos_"+key.toString(), Long.parseLong(str), jsonArray.getString(i));
pipeline.sync();

其他命令参考:http://www.redis.cn/commands/zrange.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注