副问题[/!--empirenews.page--]
媒介
这一篇文章将报告Redis中的sortedset范例呼吁,同样也是通过demo来报告,其他部门这里就不在赘述了。

案例
demo成果是文章点赞排名等等,整个demo的大抵页面如下。

筹备事变
起首界说一个存储文章的key
- private static final String ZSET_KEY = "articleList";
redis操纵工具
- private RedisTemplate redisTemplate;
-
- //string 呼吁操纵工具
-
- private ValueOperations valueOperations;
-
- //zset 呼吁操纵工具
-
- private ZSetOperations zSetOperations;
sortedset在Redis中的布局可以看下图(图片来历于Redis in Action)。

列表查询
- @RequestMapping(value = "/getList/{sortType}", method = RequestMethod.GET)
-
- public Set getList(@PathVariable String sortType) {
-
- //假如没稀有据,则添加10条数据
-
- if (zSetOperations.size(ZSET_KEY) == 0){
-
- for (int i = 1; i <= 10; i++) {
-
- zSetOperations.add(ZSET_KEY,"文章:"+i, (int)(Math.random()*10+i));
-
- }
-
- }
-
- //ASC按照分数从小到大排序,DESC反之
-
- if ("ASC".equals(sortType)){
-
- return zSetOperations.rangeWithScores(ZSET_KEY, 0, -1);
-
- } else {
-
- return zSetOperations.reverseRangeWithScores(ZSET_KEY, 0, -1);
-
- }
-
- }
这里为了省去一个个添加数据的贫困,就在获取列表数据中加了个判定。当文章数据为0时,默认添加10条数据,配置随机score加上地址的索引。
然后按照url中的参数sortType来抉择返回的数据是凭证分数升序照旧降序排序。成果结果如下

呼吁先容

赞或踩
java代码如下
- @RequestMapping(value = "/star", method = RequestMethod.POST)
-
- public boolean starOrUnStar(String member, String type) {
-
- if ("UP".equals(type)){
-
- zSetOperations.incrementScore(ZSET_KEY, member, 1);
-
- } else {
-
- zSetOperations.incrementScore(ZSET_KEY, member, -1);
-
- }
-
- return true;
-
- }
按照type抉择是否加减分数,当type为UP时暗示赞,为其他(DOWN)时暗示踩。成果结果如下

呼吁先容

起落序排名
java代码如下
- @RequestMapping(value = "/rank/{type}/{member}", method = RequestMethod.GET)
-
- public Long rank(@PathVariable String member, @PathVariable String type) {
-
- Long rank = null;
-
- if ("ASC".equals(type)){
-
- rank = zSetOperations.rank(ZSET_KEY, member);
-
- } else {
-
- rank = zSetOperations.reverseRank(ZSET_KEY, member);
-
- }
-
- return rank;
-
- }
(编辑:湖南网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|