zSetOperations=redisTemplate.opsForZSet()
以下是 zSetOperations 接口中定义的所有方法及其详细说明:
- void add(K key, V value, double score)
- 将一个成员添加到有序集合中,并设置其分数。
- 参数:
- key:有序集合的键。
- value:要添加的成员。
- score:要设置的分数。
- 返回值:无。
- Long add(K key, Set> tuples)
- 批量将成员和分数添加到有序集合中。
- 参数:
- key:有序集合的键。
- tuples:要添加的成员和分数的集合。
- 返回值:添加成功的成员数量。
- 关于Set>集合:
// 创建一个存储 TypedTuple 的集合
Set<ZSetOperations.TypedTuple<V>> tuples = new HashSet<>();
// 创建 TypedTuple 对象并添加到集合中
ZSetOperations.TypedTuple<V> tuple1 = new DefaultTypedTuple<>(value1, score1);
tuples.add(tuple1);
ZSetOperations.TypedTuple<V> tuple2 = new DefaultTypedTuple<>(value2, score2);
tuples.add(tuple2);
- Long remove(K key, Object... values)
- 批量删除有序集合中的指定成员。
- 参数:
- key:有序集合的键。
- values:要删除的多个成员,以逗号分隔。
- 返回值:成功删除的成员数量。
- Double incrementScore(K key, V value, double delta)
- 为有序集合中的指定成员增加分数。
- 参数:
- key:有序集合的键。
- value:要增加分数的成员。
- delta:要增加的分数。
- 返回值:增加后的分数。
- Double incrementScore(K key, V value, long delta)
- 为有序集合中的指定成员增加分数。
- 参数:
- key:有序集合的键。
- value:要增加分数的成员。
- delta:要增加的分数。
- 返回值:增加后的分数。
- Long zCard(K key)
- 返回有序集合的成员数量。
- 参数:
- key:有序集合的键。
- 返回值:有序集合的成员数量。
- Long size(K key)
- 返回有序集合的长度(成员数量)。
- 参数:
- key:有序集合的键。
- 返回值:有序集合的长度。
- Long rank(K key, Object o)
- 返回有序集合中指定成员的排名(从0开始)。
- 参数:
- key:有序集合的键。
- o:要查询排名的成员。
- 返回值:成员的排名。
- Double score(K key, Object o)
- 返回有序集合中指定成员的分数。
- 参数:
- key:有序集合的键。
- o:要查询分数的成员。
- 返回值:成员的分数。
- Set range(K key, long start, long end)
- 返回指定排名范围内的有序集合成员。
- 参数:
- key:有序集合的键。
- start:起始排名。
- end:结束排名。
- 返回值:指定排名范围内的有序集合成员。
- Set> rangeWithScores(K key, long start, long end)
- 返回指定排名范围内的有序集合成员以及成员的分数。
- 参数:
- key:有序集合的键。
- start:起始排名。
- end:结束排名。
- 返回值:指定排名范围内的有序集合成员以及成员的分数。
例子:
Set<ZSetOperations.TypedTuple<String>> rankSet = zSetOperations.rangeWithScores("rank", 0, -1);
for(ZSetOperations.TypedTuple<String> rank : rankSet){
Double score = rank.getScore();
String value = rank.getValue();
}
- Set rangeByScore(K key, double min, double max)
- 返回分数范围内的有序集合成员。
- 参数:
- key:有序集合的键。
- min:最小分数值。
- max:最大分数值。
- 返回值:分数范围内的有序集合成员。
- Set rangeByScore(K key, double min, double max, long offset, long count)
- 返回分数范围内的有序集合成员,并进行分页。
- 参数:
- key:有序集合的键。
-
-
- min:最小分数值。
- max:最大分数值。
- offset:分页起始位置。
- count:分页数量。
-
- 返回值:分数范围内的有序集合成员。
- Set> rangeByScoreWithScores(K key, double min, double max)
- 返回分数范围内的有序集合成员以及成员的分数。
- 参数:
- key:有序集合的键。
- min:最小分数值。
- max:最大分数值。
- 返回值:分数范围内的有序集合成员以及成员的分数。
- Set> rangeByScoreWithScores(K key, double min, double max, long offset, long count)
- 返回分数范围内的有序集合成员以及成员的分数,并进行分页。
- 参数:
- key:有序集合的键。
- min:最小分数值。
- max:最大分数值。
- offset:分页起始位置。
- count:分页数量。
- 返回值:分数范围内的有序集合成员以及成员的分数。
- Cursor> scan(K key, ScanOptions options)
- 遍历整个有序集合。
- 参数:
- key:有序集合的键。
- options:遍历选项。
- 返回值:游标对象,可以用于逐个迭代获取有序集合的成员。
- 例子
// 定义要扫描的有序集合的键
String key = "myZSet";
// 定义扫描选项,这里表示不指定匹配模式,扫描全部元素
ScanOptions options = ScanOptions.scanOptions().build();
// 开始进行扫描,返回一个游标对象
Cursor<ZSetOperations.TypedTuple<V>> cursor = redisTemplate.opsForZSet().scan(key, options);
// 逐批获取有序集合的成员和分数
while (cursor.hasNext()) {
ZSetOperations.TypedTuple<V> tuple = cursor.next();
V value = tuple.getValue();
double score = tuple.getScore();
// 对成员值和分数进行处理
// ...
}
// 关闭游标,释放资源
cursor.close();
- Long removeRange(K key, long start, long end)
- 移除指定排名范围内的成员。
- 参数:
- key:有序集合的键。
- start:起始排名。
- end:结束排名。
- 返回值:成功移除的成员数量。
- Long removeRangeByScore(K key, double min, double max)
- 移除指定分数范围内的成员。
- 参数:
- key:有序集合的键。
- min:最小分数值。
- max:最大分数值。
- 返回值:成功移除的成员数量。
附录(redis的一些原生指令)
- zadd …
- 将一个或多个 member 元素及其 score 值加入到有序集 key 当中。
- zrange [WITHSCORES]
- 返回有序集 key 中,下标在之间的元素,带WITHSCORES,可以让分数一起和值返回到结果集。
- zrangebyscore key minmax [withscores] [limit offset count]
- 返回有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。有序集成员按 score 值递增(从小到大)次序排
- zrevrangebyscore key maxmin [withscores] [limit offset count]
- 同上,改为从大到小排列。
- zincrby 为元素的score加上增量
- zrem 删除该集合下,指定值的元素
- zcount 统计该集合,分数区间内的元素个数
- zrank 返回该值在集合中的排名,从0开始。