`
357029540
  • 浏览: 734945 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

RedisTemplate常用集合使用说明-boundZSetOps(十一)

阅读更多

      基础配置介绍已经在前面的《RedisTemplate常用集合使用说明(一)》中已经介绍了,现在我们直接介绍boundZSetOps()方法的使用:

       首先要定义一个BoundZSetOperations

BoundZSetOperations boundZSetOperations = redisTemplate.boundZSetOps("bzso");

 1.add(V value, double score)

     绑定键中添加值,同时指定值的分数

boundZSetOperations.add("a",1);
boundZSetOperations.add("b",2);

 2.range(long start, long end)

    获取绑定键的指定区间值

//集合中的值
boundZSetOperations.range(0,-1).forEach(v -> System.out.println("集合中的值:" + v));

 3.count(double min, double max)

     获取从指定位置开始(起始下标不再为0),到结束位置位置的值个数

//获取从指定位置开始(下标起始坐标为1)到结束位置为止的值个数
System.out.println("获取从指定位置开始(下标起始坐标为1)到结束位置为止的值个数:" + boundZSetOperations.count(1,2));

 4.add(Set<ZSetOperations.TypedTuple<V>> tuples)

    以TypedTuple的方式新增值

//通过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)

    自增长指定键的分数

//自增长后的数据
boundZSetOperations.incrementScore("a",1);
boundZSetOperations.range(0,-1).forEach(v -> System.out.println("自增长后的数据:" + v));

 6.intersectAndStore(Collection<K> otherKeys, K destKey)和intersectAndStore(K otherKey, K destKey)

     比较特定键中相同的值并存储

//获取相同值,并存储
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的键值对,不能模糊匹配。

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排序区间获取值

//按照值来排序的取值,这个排序只有在有相同分数的情况下才能使用,如果有不同的分数则返回值不确定
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设置的下标及设置的长度获取值

//获取从设置下标开始的设置长度的元素值
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)

     根据分数区间值排序取值

//按照分数排序
boundZSetOperations.rangeByScore(3,7).forEach(v -> System.out.println("按照分数排序:" + v));

11.rangeWithScores(long start, long end)

    按照位置排序对指定区间取值和分数

//按照位置排序取值和分数
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) 

    按照分数排序对指定区间取值和分数

//按照分数位置排序取值和分数
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) 

      倒序排序获取指定区间的值

//按照值来倒序取值
boundZSetOperations.reverseRange(0,3).forEach(v -> System.out.println("按照值来倒序取值:" + v));

 14.reverseRangeByScore(double min, double max)

     按照分数倒序排序获取区间取值

//按照分数来倒序取值
boundZSetOperations.reverseRangeByScore(2,5).forEach(v -> System.out.println("按照分数来倒序取值:" + v));

 15.reverseRangeWithScores(long start, long end)

     倒序排序获取指定区间的值和分数

//按照位置倒序取值和分数
tupleSet = boundZSetOperations.reverseRangeWithScores(2,5);
tupleSet.forEach(v -> System.out.printf("按照位置倒序取值和分数:%s-->%s\n",v.getValue(),v.getScore()));

16. reverseRangeByScoreWithScores(double min, double max)

       按照分数倒序排序获取指定区间的值和分数

//按照分数位置倒序取值和分数
scoreSet = boundZSetOperations.reverseRangeByScoreWithScores(2,5);
scoreSet.forEach(v -> System.out.printf("按照分数位置倒序取值和分数:%s-->%s\n",v.getValue(),v.getScore()));

 17.count(double min, double max)

     统计分数在某个区间的个数

//统计分数在某个区间的个数
System.out.println("统计分数在某个区间的个数:" + boundZSetOperations.count(2,5));

18.rank(Object o) 

      获取绑定键中的元素的下标

//获取变量中元素的索引,下标开始位置为0
System.out.println("获取变量中元素的索引:" + boundZSetOperations.rank("b"));

 19.score(Object o)

     获取绑定键中元素的分数

System.out.println("获取变量中元素的分数:" + boundZSetOperations.score("b"));

20. zCard()

       获取绑定键中元素的个数

//获取变量中元素的个数
System.out.println("获取变量中元素的个数:" + boundZSetOperations.zCard());

 21.intersectAndStore(Collection<K> otherKeys, K destKey)和intersectAndStore(K otherKey, K destKey)

     比较相同的值并存储

//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> otherKeys, K destKey)和unionAndStore(K otherKey, K destKey)

    合并所有的值并存储

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

23.remove(Object... values) 

     按值批量删除绑定键中的元素

//移除给定值中的变量
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)

     删除绑定键中按值排序的区间的值

/移除区间值的变量
boundZSetOperations.removeRange(2,3);
boundZSetOperations.range(0,-1).forEach(v -> System.out.println("移除区间值的变量后剩余的值:" + v));

24.removeRangeByScore(double min, double max)

     按照分数排序删除区间的值

//移除分数区间值的变量
boundZSetOperations.removeRangeByScore(3,5);
boundZSetOperations.range(0,-1).forEach(v -> System.out.println("移除分数区间值的变量后剩余的值:" + v));

  

 

 

 

0
0
分享到:
评论

相关推荐

    RedisTemplate常用集合使用说明-opsForZSet(六)

    这篇博客"RedisTemplate常用集合使用说明-opsForZSet(六)"可能详细介绍了如何使用RedisTemplate操作有序集合。 首先,有序集合的操作主要包括添加元素、删除元素、获取范围、更新分数等。RedisTemplate的opsForZSet...

    springboot RedisTemplate 对string-value操作

    spring boot redis RedisTemplate和ValueOperations对 string-value的操作 参照redisdoc文档的方法进行 打造 http://redisdoc.com/ 与文档中string对应 写出通用接口 与实现类 完整demo连接 //配置缓存 和序列化...

    RedisTemplate-redis-优雅玩法

    RedisTemplate不仅仅支持简单的键值对操作,还可以处理集合、哈希、有序集合等多种数据结构。例如,我们可以用它来操作List: ```java public void addToList(String listKey, User user) { redisTemplate....

    RedisTemplate-JDBCTemplate.zip

    使用`RedisTemplate`的主要步骤如下: 1. 配置Redis连接工厂,如`JedisConnectionFactory`,并设置相应的连接参数。 2. 在Spring配置中声明`RedisTemplate`,并指定键值序列化器(如StringRedisSerializer)和其他...

    RedisTemplate 的基本使用手把手教源码

    RedisTemplate 的基本使用手把手教源码

    通过RedisTemplate连接多个Redis过程解析

    本文主要介绍了通过RedisTemplate连接多个Redis过程解析,详细介绍了使用SpringBoot提供的spring-boot-starter-data-redis工具包连接多个Redis数据库的过程。 首先,在集群环境下连接多个Redis数据库是非常正常的...

    SpringBoot使用注解实现 Redis 数据库的切换.zip

    创建一个名为`RedisConfig`的配置类,使用`@Configuration`和`@Bean`注解来定义多个`RedisTemplate`: ```java @Configuration public class RedisConfig { @Value("${spring.redis.host}") private String ...

    redisTemplate封装成redisUtils和分布式锁实现

    RedisTemplate是Spring Data Redis模块中的一个核心组件,用于在Java应用中操作Redis数据库。它提供了一种面向对象的方式来执行各种Redis命令,简化了与Redis的数据交互。本篇将深入探讨如何将RedisTemplate封装成...

    redistemplate

    标题中的"redistemplate"可能指的是一个基于Redis的模板或者框架,它简化了在应用程序中使用Redis客户端的操作。Redis是一个高性能的键值数据库,常用于数据缓存、消息队列和分布式计算等领域。这个模板可能提供了...

    java使用 redis-sentinel

    在使用Redis Sentinel时,我们需要自定义`RedisTemplate`,设置Sentinel的配置,以便正确连接到哨兵系统。这通常涉及到以下步骤: 1. **创建RedisSentinelConfig**: 这个配置类将包含Sentinel的主机和端口信息,...

    Redis之RedisTemplate使用(RedisTemplate工具类)

    Redis之RedisTemplate使用(RedisTemplate工具类) String类型相关操作 List类型相关操作 Set类型相关操作 Map类型相关操作 ZSet类型相关操作

    spring整合redis以及使用RedisTemplate的方法

    本文将详细介绍如何进行Spring与Redis的整合,以及如何使用`RedisTemplate`。 首先,集成Redis需要引入相关的依赖库。在描述中提到的jar包包括`spring-data-redis-1.6.2.RELEASE.jar`,这是Spring Data Redis的核心...

    RedisTemplate具体操作

    在这个主题中,我们将深入探讨RedisTemplate的使用及其在实际开发中的应用。 首先,RedisTemplate的配置是使用Redis的必备步骤。在Spring Boot项目中,通常会在`application.properties`或`application.yml`中配置...

    RedisTemplate redisTemplate(RedisConnectionFactory factory)

    RedisTemplate, Object&gt; redisTemplate(RedisConnectionFactory factory)自定义RedisTemplate配置类,是个固定模板,可以拿来直接使用,可以直接传入Key:String和Value:Object这种类型,注意Object类需要实现序列化...

    Redis+RedisTemplate分布式锁

    Redis+RedisTemplate分布式锁

    pom.xml+redisTemplate配置

    包含SSM+redisTemplate+shiro

    分布式缓存RedisTemplate取不到数据的问题(csdn)————程序.pdf

    在使用 RedisTemplate 进行操作时,有时可能会遇到无法获取数据的问题,这通常涉及到多个方面。以下是对这些可能出现问题的详细分析: 1. **服务数据源配置一致性**: 确保你的应用与 Redis 服务器之间的连接配置...

    RedisTemplate 用法

    详细介绍RedisTemplate5种数据结构,并且有每种不同数据结构的用法的例子

    Spring学习笔记之RedisTemplate的配置与使用教程

    【Spring中的RedisTemplate配置与使用】 在Spring框架中,RedisTemplate是用于操作Redis数据库的一个强大工具,它提供了丰富的API来简化Redis的操作。本教程将详细讲解如何配置和使用RedisTemplate。 **I. 基本...

Global site tag (gtag.js) - Google Analytics