精华内容
下载资源
问答
  • redisson-spring-boot-starter

    2021-05-11 21:08:15
    redisson-spring-boot-starter spring boot 配置: spring.redis.redisson.config: classpath:redisson-beta.yml 或者 spring.redis.redisson.config: classpath:redisson-product.yml 配置类:org.redisson....

    redisson-spring-boot-starter

     

    spring boot 配置: 

    spring.redis.redisson.config: classpath:redisson-beta.yml
    或者
    spring.redis.redisson.config: classpath:redisson-product.yml

    配置类: org.redisson.spring.starter.RedissonAutoConfiguration

    目前有很多项目还在使用jedis的 setNx 充当分布式锁,然而这个锁是有问题的,redisson是java支持redis的redlock的唯一实现, 官方目前只有java web版本,配置起来很麻烦.集成该项目后只需要极少的配置.就能够使用redisson的全部功能. 目前支持集群模式,云托管模式,单Redis节点模式,哨兵模式,主从模式 配置. 支持 可重入锁,公平锁,联锁,红锁,读写锁 锁定模式

    介绍

    1. 我们为什么需要redisson?

    redisson目前是官方唯一推荐的java版的分布式锁,他支持 redlock.具体请查看 官方文档

    1. jedis为什么有问题?

    目前jedis是只支持单机的.

    jedis setNx 和设置过期时间是不同步的,在某些极端的情况下会发生死锁.导致程序崩溃.如果没有设置value, 线程1可能会释放线程2的锁 详情看下这篇 博客

    软件架构

    1. redisson
    2. spring boot

    安装教程

    1. 引入 pom.xml
    <dependency>
        <groupId>com.zengtengpeng</groupId>
        <artifactId>redisson-spring-boot-starter</artifactId>
        <version>1.0.0</version>
    </dependency>

    使用说明

    1. 在 application.properties 增加
    #单Redis节点模式
    redisson.singleServerConfig.address=127.0.0.1:6379

    2.在方法增加 @Lock 注解

    //支持 spel 表达式 如果后面需要接字符串的话请用`+`连接. 字符串一定要打`单引号`
    @Lock(keys = "#user.name+'locks'")
    public String test(User user) {
        System.out.println("进来了test");
        return "test";
    }
    
    1. 完毕

    进阶篇

    @Lock 注解参数介绍

        /**
         * REENTRANT(可重入锁),FAIR(公平锁),MULTIPLE(联锁),REDLOCK(红锁),READ(读锁), WRITE(写锁), 
         * AUTO(自动模式,当参数只有一个.使用 REENTRANT 参数多个 MULTIPLE)
         */
        LockModel lockModel() default LockModel.AUTO;
        /**
         * 需要锁定的keys
         * @return
         */
        String[] keys() default {};
        /**
         * 锁超时时间,默认30000毫秒(可在配置文件全局设置)
         * @return
         */
        long lockWatchdogTimeout() default 0;
        /**
         * 等待加锁超时时间,默认10000毫秒 -1 则表示一直等待(可在配置文件全局设置)
         * @return
         */
        long attemptTimeout() default 0;

    如何使用redisson 客户端实现自定义操作,只需要在spring 容器中注入redisson客户端就行,如下:

        @Autowired
        private RedissonClient redissonClient;

    集群模式配置(也可以使用yml写法)

    单例模式

    单机版redis

    #单Redis节点模式
    redisson.singleServerConfig.address=127.0.0.1:6379

    集群模式

    集群模式除了适用于Redis集群环境,也适用于任何云计算服务商提供的集群模式,例如AWS ElastiCache集群版、Azure Redis Cache和阿里云(Aliyun)的云数据库Redis版。

    #集群模式
    redisson.model=CLUSTER
    #redis机器.一直累加下去
    redisson.multiple-server-config.node-addresses[0]=127.0.0.1:6379
    redisson.multiple-server-config.node-addresses[1]=127.0.0.1:6380
    redisson.multiple-server-config.node-addresses[2]=127.0.0.1:6381

    云托管模式

    云托管模式适用于任何由云计算运营商提供的Redis云服务,包括亚马逊云的AWS ElastiCache、微软云的Azure Redis 缓存和阿里云(Aliyun)的云数据库Redis版

    #云托管模式
    redisson.model=REPLICATED
    #redis机器.一直累加下去
    redisson.multiple-server-config.node-addresses[0]=127.0.0.1:6379
    redisson.multiple-server-config.node-addresses[1]=127.0.0.1:6380
    redisson.multiple-server-config.node-addresses[2]=127.0.0.1:6381

    哨兵模式

    redisson.model=SENTINEL
    #主服务器的名称是哨兵进程中用来监测主从服务切换情况的。
    redisson.multiple-server-config.master-name="mymaster"
    #redis机器.一直累加下去
    redisson.multiple-server-config.node-addresses[0]=127.0.0.1:6379
    redisson.multiple-server-config.node-addresses[1]=127.0.0.1:6380
    redisson.multiple-server-config.node-addresses[2]=127.0.0.1:6381

    主从模式

    redisson.model=MASTERSLAVE
    #第一台机器就是主库.其他的为从库
    redisson.multiple-server-config.node-addresses[0]=127.0.0.1:6379
    redisson.multiple-server-config.node-addresses[1]=127.0.0.1:6380
    redisson.multiple-server-config.node-addresses[2]=127.0.0.1:6381

    属性列表(基本都是官方参数.我将参数整合了下.分为 公共参数,单例模式参数,集群模式参数)

    1.公共参数

    属性名 默认值 备注
    redisson.password   用于节点身份验证的密码。
    redisson.attemptTimeout 10000L 等待获取锁超时时间,-1则是一直等待
    redisson.lockModel 单个key默认可重入锁多个key默认联锁 锁的模式.如果不设置, REENTRANT(可重入锁),FAIR(公平锁),MULTIPLE(联锁),REDLOCK(红锁),READ(读锁), WRITE(写锁)
    redisson.model SINGLE 集群模式:SINGLE(单例),SENTINEL(哨兵),MASTERSLAVE(主从),CLUSTER(集群),REPLICATED(云托管)
    redisson.codec org.redisson.codec.JsonJacksonCodec Redisson的对象编码类是用于将对象进行序列化和反序列化,以实现对该对象在Redis里的读取和存储
    redisson.threads 当前处理核数量 * 2 这个线程池数量被所有RTopic对象监听器,RRemoteService调用者和RExecutorService任务共同共享。
    redisson.nettyThreads 当前处理核数量 * 2 这个线程池数量是在一个Redisson实例内,被其创建的所有分布式数据类型和服务,以及底层客户端所一同共享的线程池里保存的线程数量。
    redisson.transportMode NIO TransportMode.NIO,TransportMode.EPOLL - 需要依赖里有netty-transport-native-epoll包(Linux) TransportMode.KQUEUE - 需要依赖里有 netty-transport-native-kqueue包(macOS)
    redisson.idleConnectionTimeout 10000 如果当前连接池里的连接数量超过了最小空闲连接数,而同时有连接空闲时间超过了该数值,那么这些连接将会自动被关闭,并从连接池里去掉。时间单位是毫秒
    redisson.connectTimeout 10000 同任何节点建立连接时的等待超时。时间单位是毫秒。
    redisson.timeout 3000 等待节点回复命令的时间。该时间从命令发送成功时开始计时。
    redisson.retryAttempts 3 如果尝试达到 retryAttempts(命令失败重试次数) 仍然不能将命令发送至某个指定的节点时,将抛出错误。如果尝试在此限制之内发送成功,则开始启用 timeout(命令等待超时) 计时。
    redisson.retryInterval 1500 在一条命令发送失败以后,等待重试发送的时间间隔。时间单位是毫秒。
    redisson.subscriptionsPerConnection 5 每个连接的最大订阅数量。
    redisson.clientName   在Redis节点里显示的客户端名称。
    redisson.sslEnableEndpointIdentification true 开启SSL终端识别能力。
    redisson.sslProvider JDK 确定采用哪种方式(JDK或OPENSSL)来实现SSL连接。
    redisson.sslTruststore   指定SSL信任证书库的路径。
    redisson.sslTruststorePassword   指定SSL信任证书库的密码。
    redisson.sslKeystore   指定SSL钥匙库的路径。
    redisson.sslKeystorePassword   指定SSL钥匙库的密码。
    redisson.lockWatchdogTimeout 30000 监控锁的看门狗超时时间单位为毫秒。该参数只适用于分布式锁的加锁请求中未明确使用leaseTimeout参数的情况。如果该看门口未使用lockWatchdogTimeout去重新调整一个分布式锁的lockWatchdogTimeout超时,那么这个锁将变为失效状态。这个参数可以用来避免由Redisson客户端节点宕机或其他原因造成死锁的情况。
    redisson.keepPubSubOrder true 通过该参数来修改是否按订阅发布消息的接收顺序出来消息,如果选否将对消息实行并行处理,该参数只适用于订阅发布消息的情况。
    1. 单例模式参数
    属性名 默认值 备注
    redisson.singleServerConfig.address   服务器地址,必填ip:port
    redisson.singleServerConfig.database 0 尝试连接的数据库编号。
    redisson.singleServerConfig.subscriptionConnectionMinimumIdleSize 1 用于发布和订阅连接的最小保持连接数(长连接)。Redisson内部经常通过发布和订阅来实现许多功能。长期保持一定数量的发布订阅连接是必须的。
    redisson.singleServerConfig.subscriptionConnectionPoolSize 50 用于发布和订阅连接的连接池最大容量。连接池的连接数量自动弹性伸缩。
    redisson.singleServerConfig.connectionMinimumIdleSize 32 最小保持连接数(长连接)。长期保持一定数量的连接有利于提高瞬时写入反应速度。
    redisson.singleServerConfig.connectionPoolSize 64 连接池最大容量。连接池的连接数量自动弹性伸缩。
    redisson.singleServerConfig.dnsMonitoringInterval 5000 用来指定检查节点DNS变化的时间间隔。使用的时候应该确保JVM里的DNS数据的缓存时间保持在足够低的范围才有意义。用-1来禁用该功能。
    1. 集群模式
    属性名 默认值 备注
    redisson.multiple-server-config.node-addresses   服务器节点地址.必填 
    redisson.multiple-server-config.node-addresses[0]=127.0.0.1:6379
    redisson.multiple-server-config.node-addresses[1]=127.0.0.1:6380
    redisson.multiple-server-config.node-addresses[2]=127.0.0.1:6381
    redisson.multiple-server-config.loadBalancer org.redisson.connection.balancer.RoundRobinLoadBalancer 在多Redis服务节点的环境里,可以选用以下几种负载均衡方式选择一个节点:
    org.redisson.connection.balancer.WeightedRoundRobinBalancer - 权重轮询调度算法
    org.redisson.connection.balancer.RoundRobinLoadBalancer - 轮询调度算法
    org.redisson.connection.balancer.RandomLoadBalancer - 随机调度算法
    redisson.multiple-server-config.slaveConnectionMinimumIdleSize 32 多从节点的环境里,每个 从服务节点里用于普通操作(非 发布和订阅)的最小保持连接数(长连接)。长期保持一定数量的连接有利于提高瞬时读取反映速度。
    redisson.multiple-server-config.slaveConnectionPoolSize 64 多从节点的环境里,每个 从服务节点里用于普通操作(非 发布和订阅)连接的连接池最大容量。连接池的连接数量自动弹性伸缩。
    redisson.multiple-server-config.masterConnectionMinimumIdleSize 32 多节点的环境里,每个 主节点的最小保持连接数(长连接)。长期保持一定数量的连接有利于提高瞬时写入反应速度。
    redisson.multiple-server-config.masterConnectionPoolSize 64 多主节点的环境里,每个 主节点的连接池最大容量。连接池的连接数量自动弹性伸缩。
    redisson.multiple-server-config.readMode SLAVE 设置读取操作选择节点的模式。 可用值为: SLAVE - 只在从服务节点里读取。 MASTER - 只在主服务节点里读取。 MASTER_SLAVE - 在主从服务节点里都可以读取。
    redisson.multiple-server-config.subscriptionMode SLAVE 设置订阅操作选择节点的模式。 可用值为: SLAVE - 只在从服务节点里订阅。 MASTER - 只在主服务节点里订阅。
    redisson.multiple-server-config.subscriptionConnectionMinimumIdleSize 1 用于发布和订阅连接的最小保持连接数(长连接)。Redisson内部经常通过发布和订阅来实现许多功能。长期保持一定数量的发布订阅连接是必须的。 redisson.multiple-server-config.subscriptionConnectionPoolSize
    redisson.multiple-server-config.dnsMonitoringInterval 5000 监测DNS的变化情况的时间间隔。
    redisson.multiple-server-config.scanInterval 1000 (集群,哨兵,云托管模特特有) 对Redis集群节点状态扫描的时间间隔。单位是毫秒。
    redisson.multiple-server-config.database 0 (哨兵模式,云托管,主从模式特有)尝试连接的数据库编号。
    redisson.multiple-server-config.masterName   (哨兵模式特有)主服务器的名称是哨兵进程中用来监测主从服务切换情况的。
    展开全文
  • redisson-spring-boot-starter
  • redisson-spring-boot-starter 支持 springboot1

    千次阅读 2020-03-31 10:01:01
    由于最新版的redisson-spring-boot-starter支持2.2.x,看下图,如果历史项目中是springboot1,那就需要调整下redisson-spring-data,否则不支持 ...

    https://github.com/redisson/redisson/tree/master/redisson-spring-boot-starter#spring-boot-starter

    由于最新版的redisson-spring-boot-starter支持2.2.x,看下图,如果历史项目中是springboot1,那就需要调整下redisson-spring-data,否则不支持

     

    redisson-spring-data
    module name
    Spring Boot
    version
    redisson-spring-data-16 1.3.x
    redisson-spring-data-17 1.4.x
    redisson-spring-data-18 1.5.x
    redisson-spring-data-20 2.0.x
    redisson-spring-data-21 2.1.x
    redisson-spring-data-22 2.2.x

     

    
    <redisson.spring.boot.starter.version>3.12.2</redisson.spring.boot.starter.version>

     

    以下以springboot1.4.4为例,其他版本也是同理,下面pom是重点

    # 排除redisson-spring-data-22  引入redisson-spring-data-17
    
    <dependency>
                <groupId>org.redisson</groupId>
                <artifactId>redisson-spring-boot-starter</artifactId>
                <version>${redisson.spring.boot.starter.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.redisson</groupId>
                        <artifactId>redisson-spring-data-22</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
    
            <dependency>
                <groupId>org.redisson</groupId>
                <artifactId>redisson-spring-data-17</artifactId>
                <version>${redisson.spring.boot.starter.version}</version>
            </dependency>

     

     

    
    spring:
      application:
          name: redisson
      # 单机redis 配置
      redis:
        host: localhost
        port: 6379
        database: 0
        password: 123456

     

     

     

     

     

     

     

     

    展开全文
  • https://github.com/redisson/redisson/blob/master/redisson-spring-boot-starter/README.md Integrates Redisson with Spring Boot library. Depends on Spring Data Redis module. dependency spring-boo...
        

    https://github.com/redisson/redisson/blob/master/redisson-spring-boot-starter/README.md

    Integrates Redisson with Spring Boot library. Depends on Spring Data Redis module.

    dependency
    spring-boot-starter-data-redis
    redisson-spring-data-21

    展开全文
  • 看文档 redisson 是支持JsonJacksonCodec等各种序列化的,但是redisson-spring-boot-starter中却不能配置序列化,我们可以查看 redisson-spring-boot-starter的源码 查看 RedissonAutoConfiguration 类 如图: ...

    首先 贴一个 官网文档地址 https://github.com/redisson/redisson/wiki/2.-%E9%85%8D%E7%BD%AE%E6%96%B9%E6%B3%95

    看文档 redisson 是支持JsonJacksonCodec等各种序列化的,但是redisson-spring-boot-starter中却不能配置序列化,我们可以查看

    redisson-spring-boot-starter的源码 查看 RedissonAutoConfiguration 类

    如图:

     

    我们可以看到 几个 if判断 ,会发现 第一个if判断是取 

    spring.redis.redisson.config的配置 及 redisson配置文件的路径
    

    后面几个就不解释了 主要判断是否哨兵,集群等模式重点看一下 最后的那个else 这里取得配置 是用得 spring-data-redise的配置,所以这里并不支持设置序列化,可以看到 这里 new Config(),我们看一下 Config的构造方法

    这里默认设置了 编码方式FstCodec 这个是官方自己的 基于二进制的非常高效,重点来了,坑就出在这里

    由于我们用的是微服务,并且启用了缓存,缓存用的就是redission,有A和B两个服务 都会去redisson取同一个对象,由于更改了业务,我们修改了A服务,使得 redission缓存的对象多了一个字段,而B服务还是原来的对象(少一个字段),结果测试发现从B服务取出来的对象的字段发生了位移 比如 a字段对应value 1 b字段对应value2  因为这个原因就编程 a字段对应 2

    目前不知道原理是什么,通过设置序列化解决改问题

    具体设置方式就是 按照官方文档上写一个 redisson的yaml配置文件,并在application中 spring.redis.redisson.config指定配置文件路径即可

    展开全文
  • 1、pom <dependency> <groupId>org.redisson</groupId>...redisson-spring-boot-starter</artifactId> <version>3.15.1</version> </dependency> 2、redis
  • 1.引用: <dependency> <groupId>...redisson-spring-boot-starter</artifactId> <version>3.15.3</version> </dependency> 2. # common spring boot se...
  • redisson-spring-boot-starter目前有很多项目还在使用jedis的 setNx 充当分布式锁,然而这个锁是有问题的,redisson是java支持redis的redlock的唯一实现,集成该项目后只需要极少的配置.就能够使用redisson的全部功能. ...
  • redisson-spring-boot-starter目前有很多项目还在使用jedis的 setNx 充当分布式锁,然而这个锁是有问题的,redisson是java支持redis的redlock的唯一实现,集成该项目后只需要极少的配置.就能够使用redisson的全部功能. ...
  • 1、pom文件添加 <dependency> <groupId>org.redisson<...redisson-spring-boot-starter</artifactId> <version>3.15.1</version> </dependency> 2、na
  • redisson-spring-boot-starter目前有很多项目还在使用jedis的 setNx 充当分布式锁,然而这个锁是有问题的,redisson是java支持redis的redlock的唯一实现,集成该项目后只需要极少的配置.就能够使用redisson的全部功能. ...
  • lock-spring-boot-starter介绍基于 redisson 实现的 spring boot starter 分布式锁框架,实现了可重入锁、公平锁、联锁、红锁、读写锁等常用锁的方式,并支持集群模式下的 redis 。使用说明创建 Spring Boot 项目引入...
  • lock-spring-boot-starter介绍基于 redisson 实现的 spring boot starter 分布式锁框架,实现了可重入锁、公平锁、联锁、红锁、读写锁等常用锁的方式,并支持集群模式下的 redis 。使用说明创建 Spring Boot 项目引入...
  • Spring boot 整合 redissonspring-session

    千次阅读 2018-09-28 01:15:07
    在项目中引入封装好的redisson-spring-boot-starter依赖(也可以根据封装代码或者官网自己实现,从简单角度建议根据封装代码实现自己需要的) &amp;lt;dependency&amp;gt; &amp;lt;g...
  • Redisson-分布式锁-闭锁

    2021-02-08 17:21:43
    Redisson-分布式锁-闭锁 引入必要依赖 <dependency> <groupId>org.springframework.boot<...spring-boot-starter-data-redis</artifactId> <!-- 排除lettuce客户端,使用jedis客户端-->
  • Redisson-实现分布式锁

    2021-02-08 17:05:45
    配置redisson 引入必要依赖 <dependency> <groupId>org.springframework.boot<...spring-boot-starter-data-redis</artifactId> <!-- 排除lettuce客户端,使用jedis客户端-->
  • 软件简介整合 RedisTemplate 与 StringRedisTemplate,开箱即用,提供更友好更完善的 API,更方便的调用,支持Jedis、Lettuce、Redisson 等主流客户端,并且...wiki.xsxredis-spring-boot-starterRELEASEredis配置:...
  • redis-spring-boot-starter 介绍整合RedisTemplate与StringRedisTemplate,开箱即用,提供更友好更完善的API,更方便的调用,支持Jedis、Lettuce、Redisson等主流客户端,并且在非集群模式下支持分片操作软件架构...
  • 本文主要介绍redisson中对于可重入锁、读写锁、公平锁的实现,并利用spring AOP封装成基于方法级别的...关于redisson的介绍及其spring boot starter的封装参考:spring boot redisson starter的封装和使用 redisson...
  • 由于最新版本的redisson starter使用的spring data是22的,而2.1.1版本支持redisson-spring-data-21,所以这边进行了一个排除与引入操作. <dependency> <groupId>org.redisson</groupId>
  • 在【Redis Jedis实战(含Spring Boot)】基础上做如下修改: 1、子pom.xml 添加redisson依赖 <!-- <dependency> <groupId>org.redisson<...redisson-spring-boot-starter</art...
  • 文章目录官网Jedis VS LettuceCodePOM依赖配置文件 官网 ... 怎么还有 Spring Data Redis ? 莫慌,小兄弟, 来看个关系图 帮你捋一捋 ...在 spring-boot-starter-data-redis 项目 2.X 版本中 ,默认使用 Lettuc
  • redisson-spring-boot-starter 官方文档 通过YAML文件配置单节点模式 一)、引入Redisson整合Spring Boot依赖 <!-- Spring Boot 相关依赖 --> <dependency> <groupId>org.springframework.boot&...
  • Redisson最新版starter模式集成

    千次阅读 2020-03-19 13:22:42
    redisson-spring-boot-starter最新版本是3.12.3,支持两种配置方式,首先是完全兼容spring-boot-starter-data-redis的配置,第二可以使用redisson自己的配置方式。 1.在maven pom文件中引入依赖 <dependency>...
  • 前言 java操作Redis有很多中方案,Jedis...SpringBoot提供了整合Redis的方案,我们使用spring-boot-starter-data-redis包就可以很方便的操作Redis了。 1.第一步:导入redis的基础依赖 <!--整合Redis , 底层可以用je
  • springboot-api-demo springboot开发脚手架。 详细包括:如何优雅加压,弃用tomcat容器改用undertow,连接数据库, redis, ... < artifactId>redisson-spring-boot-starter < version>3.13.6 ### 3,添加配置文
  • redisson 相关网址

    2020-03-31 09:00:24
    https://github.com/redisson/redisson/wiki/Table-of-Content https://github.com/redisson/redisson/tree/master/redisson-spring-boot-starter#spring-boot-starter https://github.com/redisson/redisson/w...

空空如也

空空如也

1 2 3 4 5 6
收藏数 113
精华内容 45
关键字:

redisson-spring-boot-starter

redis 订阅
spring 订阅