Java zset 应用_Java简单使用redis-zset实现排行榜
簡單使用redis-zset實現排行榜
此方法實現一個根據某字段的查詢次數進行排行,查詢的次數越多排行越前(從大到小排序),適用于初學者
1.添加依賴
org.springframework.boot
spring-boot-starter-data-redis
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 list = new ArrayList<>();
/** 從小到大排序 返回value 和 score* 參數注釋 key 為有序集合的key,1,50 是分數范圍 1-50,0 是偏移量即從哪條數據開始排序, 5是取5條滿足條件的數據*/
Set> set = redisTemplate.opsForZSet().rangeByScoreWithScores(key,1,50,0,5);
Iterator> iterator = set.iterator();
while (iterator.hasNext()){
ZSetOperations.TypedTuple next = iterator.next();
RangeVo rangeVo = new RangeVo();
rangeVo.setShopName((String) next.getValue());
rangeVo.setShopPrice(next.getScore());
list.add(rangeVo);
}
System.out.println(list);
}
到此這篇關于Java簡單使用redis-zset實現排行榜的文章就介紹到這了,更多相關redis-zset排行榜內容請搜索聚米學院以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持聚米學院!
總結
以上是生活随笔為你收集整理的Java zset 应用_Java简单使用redis-zset实现排行榜的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 魔方阵(奇数,单偶,双偶)
- 下一篇: java美元兑换,(Java实现) 美元