首先要定义一个BoundZSetOperations
Java代码
-
BoundZSetOperations boundZSetOperations = redisTemplate.boundZSetOps("bzso");
绑定键中添加值,同时指定值的分数
Java代码
-
boundZSetOperations.add("a",1);
-
boundZSetOperations.add("b",2);
2.range(long start, long end)
获取绑定键的指定区间值
Java代码
-
//集合中的值
-
boundZSetOperations.range(0,-1).forEach(v -> System.out.println("集合中的值:" + v));
3.count(double min, double max)
获取从指定位置开始(起始下标不再为0),到结束位置位置的值个数
Java代码
-
//获取从指定位置开始(下标起始坐标为1)到结束位置为止的值个数
-
System.out.println("获取从指定位置开始(下标起始坐标为1)到结束位置为止的值个数:" + boundZSetOperations.count(1,2));
4.add(Set[ZSetOperations.TypedTuple](https://docs.spring.io/spring-data/redis/docs/current/api/org/springframework/data/redis/core/ZSetOperations.TypedTuple.html)<[V](https://docs.spring.io/spring-data/redis/docs/current/api/org/springframework/data/redis/core/BoundZSetOperations.html)> tuples)
以TypedTuple的方式新增值
Java代码
-
//通过TypedTuple方式新增数据
-
ZSetOperations.TypedTuple<Object> typedTuple1 = new DefaultTypedTuple<Object>("E",6.0);
-
ZSetOperations.TypedTuple<Object> typedTuple2 = new DefaultTypedTuple<Object>("F",7.0);
-
ZSetOperations.TypedTuple<Object> typedTuple3 = new DefaultTypedTuple<Object>("G",5.0);
-
Set<ZSetOperations.TypedTuple<Object>> typedTupleSet = new HashSet<ZSetOperations.TypedTuple<Object>>();
-
typedTupleSet.add(typedTuple1);
-
typedTupleSet.add(typedTuple2);
-
typedTupleSet.add(typedTuple3);
-
boundZSetOperations.add(typedTupleSet);
-
boundZSetOperations.range(0,-1).forEach(v -> System.out.println("通过TypedTuple方式新增数据:" + v));
5.incrementScore(V value, double delta)
自增长指定键的分数
Java代码
-
//自增长后的数据
-
boundZSetOperations.incrementScore("a",1);
-
boundZSetOperations.range(0,-1).forEach(v -> System.out.println("自增长后的数据:" + v));
6.intersectAndStore(Collection[K](https://docs.spring.io/spring-data/redis/docs/current/api/org/springframework/data/redis/core/BoundZSetOperations.html) otherKeys, K destKey)和intersectAndStore(K otherKey, K destKey)
比较特定键中相同的值并存储
Java代码
-
//获取相同值,并存储
-
boundZSetOperations.intersectAndStore("bzso1","bzso2");
-
redisTemplate.opsForZSet().range("bzso2",0,-1).forEach(v -> System.out.println("获取相同值,并存储" + v));
7.scan(ScanOptions options)
匹配获取键值对,ScanOptions.NONE为获取全部键值对;ScanOptions.scanOptions().match("C").build()匹配获取键位map1的键值对,不能模糊匹配。
Java代码
-
Cursor<ZSetOperations.TypedTuple> cursor = boundZSetOperations.scan(ScanOptions.NONE);
-
while (cursor.hasNext()){
-
ZSetOperations.TypedTuple typedTuple = cursor.next();
-
System.out.println("扫描绑定数据:" + typedTuple.getValue() + "--->" + typedTuple.getScore());
-
}
8.rangeByLex(RedisZSetCommands.Range range)
根据Range排序区间获取值
Java代码
-
//按照值来排序的取值,这个排序只有在有相同分数的情况下才能使用,如果有不同的分数则返回值不确定
-
RedisZSetCommands.Range range = new RedisZSetCommands.Range();
-
range.lte("b");
-
//range.gte("F");
-
boundZSetOperations.rangeByLex(range).forEach(v -> System.out.println("按照值来排序的取值:" + v));
9.rangeByLex(RedisZSetCommands.Range range, RedisZSetCommands.Limit limit)
根据Range排序区间和Limit设置的下标及设置的长度获取值
Java代码
-
//获取从设置下标开始的设置长度的元素值
-
RedisZSetCommands.Limit limit = new RedisZSetCommands.Limit();
-
limit.count(2);
-
//起始下标为0
-
limit.offset(1);
-
boundZSetOperations.rangeByLex(range,limit).forEach(v -> System.out.println("按照值来排序的限定取值:" + v));
10.rangeByScore(double min, double max)
根据分数区间值排序取值
Java代码
-
//按照分数排序
-
boundZSetOperations.rangeByScore(3,7).forEach(v -> System.out.println("按照分数排序:" + v));
11.rangeWithScores(long start, long end)
按照位置排序对指定区间取值和分数
Java代码
-
//按照位置排序取值和分数
-
Set<ZSetOperations.TypedTuple> tupleSet = boundZSetOperations.rangeWithScores(3,5);
-
tupleSet.forEach(v -> System.out.printf("按照位置排序取值和分数:%s-->%s\n",v.getValue(),v.getScore()));
12.rangeByScoreWithScores(double min, double max)
按照分数排序对指定区间取值和分数
Java代码
-
//按照分数位置排序取值和分数
-
Set<ZSetOperations.TypedTuple> scoreSet = boundZSetOperations.rangeByScoreWithScores(1,5);
-
scoreSet.forEach(v -> System.out.printf("按照分数位置排序取值和分数:%s-->%s\n",v.getValue(),v.getScore()));
13.reverseRange(long start, long end)
倒序排序获取指定区间的值
Java代码
-
//按照值来倒序取值
-
boundZSetOperations.reverseRange(0,3).forEach(v -> System.out.println("按照值来倒序取值:" + v));
14.reverseRangeByScore(double min, double max)
按照分数倒序排序获取区间取值
Java代码
-
//按照分数来倒序取值
-
boundZSetOperations.reverseRangeByScore(2,5).forEach(v -> System.out.println("按照分数来倒序取值:" + v));
15.reverseRangeWithScores(long start, long end)
倒序排序获取指定区间的值和分数
Java代码
-
//按照位置倒序取值和分数
-
tupleSet = boundZSetOperations.reverseRangeWithScores(2,5);
-
tupleSet.forEach(v -> System.out.printf("按照位置倒序取值和分数:%s-->%s\n",v.getValue(),v.getScore()));
\16. reverseRangeByScoreWithScores(double min, double max)
按照分数倒序排序获取指定区间的值和分数
Java代码
-
//按照分数位置倒序取值和分数
-
scoreSet = boundZSetOperations.reverseRangeByScoreWithScores(2,5);
-
scoreSet.forEach(v -> System.out.printf("按照分数位置倒序取值和分数:%s-->%s\n",v.getValue(),v.getScore()));
17.count(double min, double max)
统计分数在某个区间的个数
Java代码
-
//统计分数在某个区间的个数
-
System.out.println("统计分数在某个区间的个数:" + boundZSetOperations.count(2,5));
获取绑定键中的元素的下标
Java代码
-
//获取变量中元素的索引,下标开始位置为0
-
System.out.println("获取变量中元素的索引:" + boundZSetOperations.rank("b"));
获取绑定键中元素的分数
Java代码
-
System.out.println("获取变量中元素的分数:" + boundZSetOperations.score("b"));
\20. zCard()
获取绑定键中元素的个数
Java代码
-
//获取变量中元素的个数
-
System.out.println("获取变量中元素的个数:" + boundZSetOperations.zCard());
21.intersectAndStore(Collection[K](https://docs.spring.io/spring-data/redis/docs/current/api/org/springframework/data/redis/core/BoundZSetOperations.html) otherKeys, K destKey)和intersectAndStore(K otherKey, K destKey)
比较相同的值并存储
Java代码
-
//intersectAndStore后的数据
-
boundZSetOperations.intersectAndStore("abc","bac");
-
redisTemplate.opsForSet().members("bac").forEach(v -> System.out.println("intersectAndStore后的数据:" + v));
-
//intersectAndStore集合后的数据
-
List list = new ArrayList<>(Arrays.asList("abc","acb"));
-
boundZSetOperations.intersectAndStore(list,"bac");
-
redisTemplate.opsForSet().members("bac").forEach(v -> System.out.println("intersectAndStore集合后的数据:" + v));
22.unionAndStore(Collection[K](https://docs.spring.io/spring-data/redis/docs/current/api/org/springframework/data/redis/core/BoundZSetOperations.html) otherKeys, K destKey)和unionAndStore(K otherKey, K destKey)
合并所有的值并存储
Java代码
-
//unionAndStore后的数据
-
boundZSetOperations.unionAndStore("abc","bca");
-
redisTemplate.opsForZSet().range("bca",0,-1).forEach(v -> System.out.println("unionAndStore后的数据:" + v));
-
//unionAndStore集合后的数据
-
boundZSetOperations.unionAndStore(list,"bca");
-
redisTemplate.opsForZSet().range("bca",0,-1).forEach(v -> System.out.println("unionAndStore集合后的数据:" + v));
按值批量删除绑定键中的元素
Java代码
-
//移除给定值中的变量
-
long removeCount = boundZSetOperations.remove("a","b");
-
System.out.println("移除给定值中的变量个数:" + removeCount);
-
boundZSetOperations.range(0,-1).forEach(v -> System.out.println("移除给定值中的变量后剩余的值:" + v));
23.removeRange(long start, long end)
删除绑定键中按值排序的区间的值
Java代码
-
/移除区间值的变量
-
boundZSetOperations.removeRange(2,3);
-
boundZSetOperations.range(0,-1).forEach(v -> System.out.println("移除区间值的变量后剩余的值:" + v));
24.removeRangeByScore(double min, double max)
按照分数排序删除区间的值
Java代码
-
//移除分数区间值的变量
-
boundZSetOperations.removeRangeByScore(3,5);
-
boundZSetOperations.range(0,-1).forEach(v -> System.out.println("移除分数区间值的变量后剩余的值:" + v));