欢迎来到代码驿站!

JAVA代码

当前位置:首页 > 软件编程 > JAVA代码

Java简单使用redis-zset实现排行榜

时间:2021-09-08 09:27:35|栏目:JAVA代码|点击:

简单使用redis-zset实现排行榜

此方法实现一个根据某字段的查询次数进行排行,查询的次数越多排行越前(从大到小排序),适用于初学者

1.添加依赖

 <dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-data-redis</artifactId>
  </dependency>

 2.注入RedisTemplate方法

@Autowired
public RedisTemplate redisTemplate;

3.创建对象,用来接收redis数据

@Data
public class RangeVo implements Serializable {

 private String shopName;

 private Double shopPrice;
 
}

4.添加十条redis数据

 @Test
 public void getzset4(){

  String keyModel = "testList";
  for (int i = 0; i < 10 ; i++) {
   int score = new Random().nextInt(50);
   String ss = "shop"+i;
   redisTemplate.opsForZSet().add(keyModel,ss,score);
  }
 }

5.根据某个key查询并每次查询score都会加1

@Test
 public void setOneValue(){
  String keyModel = "testList";
  String ss = "shop8";

  Double aDouble = redisTemplate.opsForZSet().incrementScore(keyModel, ss, 1);

  System.out.println(aDouble);
 }

6.查询redis中所有数据,zset会根据score自动排序

@Test
 public void getList(){

  String key = "testList";

  List<RangeVo> list = new ArrayList<>();
  /** 从小到大排序 返回value 和 score* 参数注释 key 为有序集合的key,1,50 是分数范围 1-50,0 是偏移量即从哪条数据开始排序, 5是取5条满足条件的数据*/
  Set<ZSetOperations.TypedTuple<Object>> set = redisTemplate.opsForZSet().rangeByScoreWithScores(key,1,50,0,5);
  Iterator<ZSetOperations.TypedTuple<Object>> iterator = set.iterator();
  while (iterator.hasNext()){
   ZSetOperations.TypedTuple<Object> next = iterator.next();
   RangeVo rangeVo = new RangeVo();
   rangeVo.setShopName((String) next.getValue());
   rangeVo.setShopPrice(next.getScore());
   list.add(rangeVo);
  }

  System.out.println(list);
 }

上一篇:Java热门笔试试题整理

栏    目:JAVA代码

下一篇:Java如何为 PPT 中的图形添加阴影效果

本文标题:Java简单使用redis-zset实现排行榜

本文地址:http://www.codeinn.net/misctech/173613.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有