RedisTemplate方法 - zSet

1. 新增缓存

// value可以是一个值,也可以是多个值(数组均可)
// 方法1:通过redisTemplate设置值
boolean addIndex = redisTemplate.boundZSetOps(key).add(value, 100D);

// 方法2:通过BoundValueOperations设置值
BoundZSetOperations zSetKey = redisTemplate.boundZSetOps(key);
zSetKey.add(value, 100D);

// 方法3:通过ValueOperations设置值
ZSetOperations zSetOps = redisTemplate.opsForZSet();
zSetOps.add(key, value, 100D);

2. 向集合中插入多个元素,并设置分数

// 返回成功数量
DefaultTypedTuple p1 = new DefaultTypedTuple<>(value1, 2.1D);
DefaultTypedTuple p2 = new DefaultTypedTuple<>(value2, 3.3D);
long addArr = redisTemplate.boundZSetOps(key).add(new HashSet<>(Arrays.asList(p1,p2)));

3. 按照排名先后(从小到大)打印指定区间内的元素, -1为打印全部

Set<String> range = redisTemplate.boundZSetOps(key).range(0, -1);

4. 获得指定元素的分数

Double score = redisTemplate.boundZSetOps(key).score(value);

5. 返回集合内的成员个数(长度)

Long size = redisTemplate.boundZSetOps(key).size();

6. 返回集合内指定分数范围的成员个数(长度)(Double类型)

Long count = redisTemplate.boundZSetOps(key).count(0D, 2.2D);

7. 返回集合内元素在指定分数范围内的排名(从小到大)

//不带偏移量和个数
Set byScore = redisTemplate.boundZSetOps(key).rangeByScore(0D, 2.2D);
//带偏移量和个数,(key,起始分数,最大分数,偏移量,个数)
Set<String> ranking2 = redisTemplate.opsForZSet().rangeByScore(key, 0D, 2.2D,1, 3);

8. 返回集合内元素的排名,以及分数(从小到大)

Set<ZSetOperations.TypedTuple<String>> tuples
                          = redisTemplate.boundZSetOps(key).rangeWithScores(0L, 3L);
for (ZSetOperations.TypedTuple<String> tuple : tuples) {
    // 参数:分数
    System.out.println(tuple.getValue() + " : " + tuple.getScore());
}

9. 返回指定成员的下标

//从小到大
Long startRank = redisTemplate.boundZSetOps(key).rank(value);
//从大到小
Long endRank = redisTemplate.boundZSetOps(key).reverseRank(value);

10. 删除指定元素

//返回成功个数
Long removeNumber = redisTemplate.boundZSetOps(key).remove(value);

11. 删除指定索引范围的元素(Long类型)

//返回成功个数
Long removeRange = redisTemplate.boundZSetOps(key).removeRange(0L,3L);

12. 删除指定分数范围内的元素(Double类型)

//返回成功个数
Long removeRangeByScore = redisTemplate.boundZSetOps(key).removeRangeByScore(0D,2.2D);

13. 为指定元素加分(Double类型),如果没有该元素,则为添加

//返回已设置的分数
Double incrementScore = redisTemplate.boundZSetOps(key).incrementScore(value,1.1D);