Java简单使用redis-zset实现排行榜
作者:weixin_45121508 发布时间:2021-06-07 20:34:54
标签:redis-zset,排行榜
简单使用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
0
投稿
猜你喜欢
- 假定存在这样一种情况多个用户对数据库进行写,我们的业务逻辑规定,每个用户只能写一次,大部分用户也只发一次请求。public void wri
- 本文实例总结了MFC程序设计常用技巧。分享给大家供大家参考。具体如下:1.属性页的添加:创建对话框的类,该类要从CpropertyPage继
- 一:需求当小数位很多的时候,小数位后面可能有一些多余的0并没有任何实际意义。所以在某些业务需求下可以去掉这些多余的0。例如:0.2000可以
- 前言在你的工作中,有时候可能会看到 @Accessors(chain = true) 这样的注解,他是 lo
- 1、定义一个接口 Animalpackage com.zh.vo;public interface Animal { void
- spring validation多层对象校验1、第一层对象定义import java.io.Serializable; import ja
- 前言随着标准Java的版本更新,开发者总是可以从升级后的版本中获取想要的功能。本文将给大家详细介绍下mac下面的java9版本安装使用,分享
- 前情提要我们上节内容学习了如何创建\注册\读取bean我们发现bean对象操作十分的繁琐!所以我们这个章节,就带大家来了解更加简单的bean
- 1.添加依赖直接添加 hibernate-validator<dependency> &n
- 先看一下java线程运行时各个阶段的运行状态线程是进程中的一个实体,是被系 * 立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运
- 序章简介:bean的加载控制指根据特定情况对bean进行选择性加载以达到适用项目的目标。根据之前对bean加载的八种方式,其中后面四种是可以
- SpringDataJpa创建中间表//fetch=FetchType.EAGER 关闭懒加载 相当于hibernate中的lazy=fal
- 编写C#程序的时候,我们都遇到过配置文件,而如今绝大多数的配置文件都是用XML写的。所以在处理的时候就需要操作XML文件。那么C#如何操作X
- MyBatis Generator简介MyBatis Generator(MBG)是MyBatis MyBatis 和iBATIS的代码生成
- 前言《摩尔庄园》前段时间上线, 持续超出市场预期,相信也有不错的收益。游戏好玩,所有玩家看到了前端,但是做一款游戏,离不开后台游戏服务器的支
- springboottest测试依赖和使用<dependency> <groupId>or
- 一、数据输出SpringMVC将数据携带给页面的储存工具,有三种,map,ModelMap,model,它们在底层实质还是使用到了Bindi
- 将map集合存数据与取出数据全部放在一个类MapTest中,方便阅读与查看随便创建一个包,在包中新建一个class文件,(也可以不建包,直接
- 前言工作中使用mybatis时我们需要根据数据表字段创建pojo类、mapper文件以及dao类,并且需要配置它们之间的依赖关系,这样的工作
- 前言windows自带的游戏《扫雷》是陪伴了无数人的经典游戏,本程序参考《扫雷》的规则进行了简化,用java语言实现,采用了swing技术进