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());

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐