RedisTemplate存取删除数据之ZSet
Spring-Redis存取删除数据之ZSet
·
Redis-ZSet
若key不存在则新建并添加数据,否则累加
redisTemplate.opsForZSet().incrementScore(key,value,score);
查询排名前五的数据
// 从大到小排序
Set<ZSetOperations.TypedTuple<String>> set = redisTemplate.opsForZSet().reverseRangeWithScores(RedisContantKey.TASK_TRAFFIC_TOP, 0, 4);
for (ZSetOperations.TypedTuple<String> stringTypedTuple : set) {
// value-stringTypedTuple.getValue().getName();
// score-stringTypedTuple.getScore()
}
删除指定key-value的数据
// 注意判断非空
Double score = redisTemplate.opsForZSet().score(key, value);
if (null!=score){
redisTemplate.opsForZSet().remove(key, value);
}
补充一点根据map的key进行排序,此时map的key为时间字符串:
①首先根据redis的key查询到一个map集合,再根据map的key进行排序
②对map-key进行排序
Map<Object, Object> entries = redisTemplate.opsForHash().entries(RedisContantKey.CHANNEL_TRAFFIC_DAILY_PREFIX + channelId);
// 根据key排序
ArrayList<String> keyList = new ArrayList(entries.keySet());
Collections.sort(keyList);
keyList.stream().map(key->{
if (String.valueOf(key).compareTo(sdf.format(startTime))>=0 && String.valueOf(key).compareTo(sdf.format(endTime))<=0){
dateList.add(String.valueOf(key));
}
return String.valueOf(key);
}).collect(Collectors.toList());
更多推荐



所有评论(0)