zset是有序的,不可重复的集合,每个元素都有一个分数,根据分数从小到大排序。
ZSetOperations 提供了一系列方法对有序集合进行操作,添加元素(有序集合是按照元素的 score 值由小到大进行排列)。
redisTemplate.opsForZSet().add(key, value, score)
删除对应的 value,value 可以为多个值
redisTemplate.opsForZSet().remove(key, values)
增加元素的 score 值,并返回增加后的值
redisTemplate.opsForZSet().incrementScore(key, value, delta)
返回元素在集合的排名,有序集合是按照元素的 score 值由小到大排列
redisTemplate.opsForZSet().rank(key, value)
返回元素在集合的排名,按元素的 score 值由大到小排列
redisTemplate.opsForZSet().reverseRank(key, value)
获取集合中给定区间的元素(start 开始位置,end 结束位置, -1 查询所有)
redisTemplate.opsForZSet().reverseRangeWithScores(key, start,end)
按照 Score 值查询集合中的元素,结果从小到大排序
redisTemplate.opsForZSet().reverseRangeByScore(key, min, max)
从高到低的排序集中获取分数在最小和最大值之间的元素
redisTemplate.opsForZSet().reverseRangeByScore(key, min, max, start, end)
根据 score 值获取集合元素数量
redisTemplate.opsForZSet().count(key, min, max)
获取集合的大小
redisTemplate.opsForZSet().size(key)
获取集合中 key、value 元素对应的 score 值
redisTemplate.opsForZSet().score(key, value)
移除指定索引位置处的成员
redisTemplate.opsForZSet().removeRange(key, start, end)
移除指定 score 范围的集合成员
redisTemplate.opsForZSet().removeRangeByScore(key, min, max)
获取 key 和 otherKey 的并集并存储在 destKey 中(其中 otherKeys 可以为单个字符串或者字符串集合)
redisTemplate.opsForZSet().unionAndStore(key, otherKey, destKey)
获取 key 和 otherKey 的交集并存储在 destKey 中(其中 otherKeys 可以为单个字符串或者字符串集合)
redisTemplate.opsForZSet().intersectAndStore(key, otherKey, destKey)
遍历集合(和 iterator 一模一样)
redisTemplate.opsForZSet().rangeByScoreWithScores(K key, double min, double max, long offset, long count)
key为查询的有序集合的键名;min和max为分数范围的下限值和上限值,可以使用-infinity和+infinity表示最小值和最大值;limit和count可以指定返回结果的偏移量和数量。
Cursor<TypedTuple> scan = opsForZSet.scan(“test3”, ScanOptions.NONE); while (scan.hasNext()){
ZSetOperations.TypedTuple item = scan.next();
System.out.println(item.getValue() + “:” + item.getScore());
}