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

作者:weixin_45121508 时间:2021-06-07 20:34:54 

简单使用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);
}

来源:https://blog.csdn.net/weixin_45121508/article/details/111174557

标签:redis-zset,排行榜
0
投稿

猜你喜欢

  • BeanDefinitionRegistryPostProcessor如何动态注册Bean到Spring

    2023-11-24 12:56:16
  • Java命令行下Jar包打包小结

    2023-01-04 19:25:44
  • 解决fastjson从1.1.41升级到1.2.28后报错问题详解

    2021-12-30 21:55:35
  • 在Java中判断两个Long对象是否相等

    2022-09-01 11:22:10
  • C#使用linq语句查询数组中以特定字符开头元素的方法

    2022-09-22 06:39:07
  • SpringBoot分离打Jar包的两种配置方式

    2023-01-30 09:06:59
  • JAVA中使用FTPClient实现文件上传下载实例代码

    2021-08-17 20:45:05
  • Java对字符串进行加密解密

    2022-10-09 05:39:48
  • Java数组索引异常产生及解决方案

    2023-11-05 16:52:27
  • Java中遍历ConcurrentHashMap的四种方式详解

    2023-11-17 08:54:41
  • Java常用类String的面试题汇总(java面试题)

    2023-11-23 20:40:45
  • spring-boot中使用spring-boot-devtools的实现代码

    2021-10-09 13:31:32
  • java线程池的四种创建方式详细分析

    2022-10-20 22:32:41
  • C#异步编程由浅入深(二)之Async/Await的使用

    2022-10-14 16:45:20
  • 如何使用Java redis实现发送手机验证码功能

    2023-11-26 17:25:00
  • 详解Spring 中如何控制2个bean中的初始化顺序

    2023-05-06 13:43:18
  • JavaWeb项目Servlet无法访问问题解决

    2022-10-10 03:33:52
  • SpringBoot2整合activiti6环境搭建过程解析

    2023-11-09 02:27:03
  • Java发送邮件遇到的常见需求汇总

    2021-10-07 14:51:02
  • c#和java base64不一致的解决方法

    2022-11-24 02:18:55
  • asp之家 软件编程 m.aspxhome.com