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,排行榜
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
BeanDefinitionRegistryPostProcessor如何动态注册Bean到Spring
2023-11-24 12:56:16
![](https://img.aspxhome.com/file/2023/1/59941_0s.jpg)
Java命令行下Jar包打包小结
2023-01-04 19:25:44
![](https://img.aspxhome.com/file/2023/7/70517_0s.jpg)
解决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
![](https://img.aspxhome.com/file/2023/2/58702_0s.png)
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
![](https://img.aspxhome.com/file/2023/4/69674_0s.png)
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
![](https://img.aspxhome.com/file/2023/4/70314_0s.jpg)
JavaWeb项目Servlet无法访问问题解决
2022-10-10 03:33:52
SpringBoot2整合activiti6环境搭建过程解析
2023-11-09 02:27:03
![](https://img.aspxhome.com/file/2023/9/59379_0s.png)
Java发送邮件遇到的常见需求汇总
2021-10-07 14:51:02
c#和java base64不一致的解决方法
2022-11-24 02:18:55
![](https://img.aspxhome.com/file/2023/0/68740_0s.png)