[转帖]Redission 配置方法

redission,配置,方法 · 浏览次数 : 0

小编点评

**Redis 集群配置** ```yaml # masterSlaveServersConfig idleConnectionTimeout: 10000 connectTimeout: 10000 timeout: 3000 retryAttempts: 3 retryInterval: 1500 failedAttempts: 3 password: null subscriptionsPerConnection: 5 clientName: null loadBalancer: !<org.redisson.connection.balancer.RoundRobinLoadBalancer> {} slaveSubscriptionConnectionMinimumIdleSize: 1 slaveSubscriptionConnectionPoolSize: 50 slaveConnectionMinimumIdleSize: 32 slaveConnectionPoolSize: 64 masterConnectionMinimumIdleSize: 32 masterConnectionPoolSize: 64 readMode: "SLAVE" slaveAddresses: - "redis://127.0.0.1:6381" - "redis://127.0.0.1:6380" masterAddress: "redis://127.0.0.1:6379" database: 0 threads: 0 nettyThreads: 0 codec: !<org.redisson.codec.JsonJacksonCodec> transportMode: "NIO" ``` **主要配置项:** * **idleConnectionTimeout:**从服务节点里读取数据的超时时间。 * **connectTimeout:**连接到服务节点的超时时间。 * **timeout:**命令发送的超时时间。 * **retryAttempts:**尝试重试连接的次数。 * **retryInterval:**重试连接之间的间隔时间。 * **failedAttempts:**重试连接失败的次数。 * **password:**用于节点身份验证的密码。 * **subscriptionsPerConnection:**每个连接的最大订阅数量。 * **clientName:**用于连接的客户端名称。 * **loadBalancer:**使用哪种负载均衡算法。 * **slaveSubscriptionConnectionMinimumIdleSize:**从服务节点发布和订阅连接的最小空闲连接数。 * **slaveSubscriptionConnectionPoolSize:**从服务节点发布和订阅连接的连接池最大容量。 * **slaveConnectionMinimumIdleSize:**从服务节点用于普通操作的最小保持连接数。 * **slaveConnectionPoolSize:**从服务节点用于普通操作的连接池最大容量。 * **masterConnectionMinimumIdleSize:**主节点用于普通操作的最小保持连接数。 * **masterConnectionPoolSize:**主节点用于普通操作的连接池最大容量。 * **readMode:**读取操作的负载均衡模式。 * **slaveAddresses:**从服务节点发布和订阅连接的 IP 地址和端口。 * **masterAddress:**主节点的 IP 地址和端口。

正文

Redission 配置方法

1. 程序化配置方法

Redisson程序化的配置方法是通过构建Config对象实例来实现的。例如:

Config config = new Config();
config.setTransportMode(TransportMode.EPOLL);
config.useClusterServers()
      //可以用"rediss://"来启用SSL连接
      .addNodeAddress("redis://127.0.0.1:7181");

    2. 文件方式配置

    Redisson既可以通过用户提供的YAML格式的文本文件来配置

    2.1 通过YAML格式配置

    Redisson的配置文件可以是或YAML格式。 也通过调用config.fromYAML方法并指定一个File实例来实现读取YAML格式的配置:

    Config config = Config.fromYAML(new File("config-file.yaml"));
    RedissonClient redisson = Redisson.create(config);
    
    • 1
    • 2

    调用 config.toYAML 方法可以将一个Config 配置实例序列化为一个含有YAML 数据类型的字符串:

    Config config = new Config();
    // ... 省略许多其他的设置
    String jsonFormat = config.toYAML();
    
    • 1
    • 2
    • 3

    3. 常用设置

    以下是关于org.redisson.Config类的配置参数,它适用于所有Redis组态模式(单机,集群和哨兵)

    codec(编码)

    默认值: org.redisson.codec.JsonJacksonCodec
    Redisson的对象编码类是用于将对象进行序列化和反序列化,以实现对该对象在Redis里的读取和存储。Redisson提供了以下几种的对象编码应用,以供大家选择:

    编码类名称说明
    org.redisson.codec.JsonJacksonCodecJackson JSON 编码 默认编码
    org.redisson.codec.AvroJacksonCodecAvro 一个二进制的JSON编码
    org.redisson.codec.SmileJacksonCodecSmile 另一个二进制的JSON编码
    org.redisson.codec.CborJacksonCodecCBOR 又一个二进制的JSON编码
    org.redisson.codec.MsgPackJacksonCodecMsgPack 再来一个二进制的JSON编码
    org.redisson.codec.IonJacksonCodecAmazon Ion 亚马逊的Ion编码,格式与JSON类似
    org.redisson.codec.KryoCodecKryo 二进制对象序列化编码
    org.redisson.codec.SerializationCodecJDK序列化编码
    org.redisson.codec.FstCodecFST 10倍于JDK序列化性能而且100%兼容的编码
    org.redisson.codec.LZ4CodecLZ4 压缩型序列化对象编码
    org.redisson.codec.SnappyCodecSnappy 另一个压缩型序列化对象编码
    org.redisson.client.codec.JsonJacksonMapCodec基于Jackson的映射类使用的编码。可用于避免序列化类的信息,以及用于解决使用byte[]遇到的问题。
    org.redisson.client.codec.StringCodec纯字符串编码(无转换)
    org.redisson.client.codec.LongCodec纯整长型数字编码(无转换)
    org.redisson.client.codec.ByteArrayCodec字节数组编码
    org.redisson.codec.CompositeCodec用来组合多种不同编码在一起

    threads(线程池数量)

    默认值: 当前处理核数量 * 2
    这个线程池数量被所有RTopic对象监听器,RRemoteService调用者和RExecutorService任务共同共享。

    nettyThreads (Netty线程池数量)

    默认值: 当前处理核数量 * 2
    这个线程池数量是在一个Redisson实例内,被其创建的所有分布式数据类型和服务,以及底层客户端所一同共享的线程池里保存的线程数量。

    executor(线程池)

    单独提供一个用来执行所有RTopic对象监听器,RRemoteService调用者和RExecutorService任务的线程池(ExecutorService)实例。

    eventLoopGroup

    用于特别指定一个EventLoopGroup. EventLoopGroup是用来处理所有通过Netty与Redis服务之间的连接发送和接受的消息。每一个Redisson都会在默认情况下自己创建管理一个EventLoopGroup实例。因此,如果在同一个JVM里面可能存在多个Redisson实例的情况下,采取这个配置实现多个Redisson实例共享一个EventLoopGroup的目的。
    只有io.netty.channel.epoll.EpollEventLoopGroupio.netty.channel.nio.NioEventLoopGroup才是允许的类型。

    transportMode(传输模式)

    默认值:TransportMode.NIO
    可选参数:
    TransportMode.NIO,
    TransportMode.EPOLL - 需要依赖里有netty-transport-native-epoll包(Linux) TransportMode.KQUEUE - 需要依赖里有 netty-transport-native-kqueue包(macOS)

    lockWatchdogTimeout(监控锁的看门狗超时,单位:毫秒)

    默认值:30000

    监控锁的看门狗超时时间单位为毫秒。该参数只适用于分布式锁的加锁请求中未明确使用leaseTimeout参数的情况。如果该看门口未使用lockWatchdogTimeout去重新调整一个分布式锁的lockWatchdogTimeout超时,那么这个锁将变为失效状态。这个参数可以用来避免由Redisson客户端节点宕机或其他原因造成死锁的情况。

    keepPubSubOrder(保持订阅发布顺序)

    默认值:true
    通过该参数来修改是否按订阅发布消息的接收顺序出来消息,如果选否将对消息实行并行处理,该参数只适用于订阅发布消息的情况。

    performanceMode(高性能模式)

    默认值:HIGHER_THROUGHPUT
    用来指定高性能引擎的行为。由于该变量值的选用与使用场景息息相关(NORMAL除外)我们建议对每个参数值都进行尝试。
    该参数仅限于Redisson PRO版本。
    可选模式:
    HIGHER_THROUGHPUT - 将高性能引擎切换到 高通量 模式。 LOWER_LATENCY_AUTO - 将高性能引擎切换到 低延时 模式并自动探测最佳设定。 LOWER_LATENCY_MODE_1 - 将高性能引擎切换到 低延时 模式并调整到预设模式1。 LOWER_LATENCY_MODE_2 - 将高性能引擎切换到 低延时 模式并调整到预设模式2。NORMAL - 将高性能引擎切换到 普通 模式

    4. 集群模式

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

    程序化配置集群的用法:

    Config config = new Config();
    config.useClusterServers()
        .setScanInterval(2000) // 集群状态扫描间隔时间,单位是毫秒
        //可以用"rediss://"来启用SSL连接
        .addNodeAddress("redis://127.0.0.1:7000", "redis://127.0.0.1:7001")
        .addNodeAddress("redis://127.0.0.1:7002");
    

    RedissonClient redisson = Redisson.create(config);

      4.1. 集群设置

      介绍配置Redis集群组态的文档在这里。 Redis集群组态的最低要求是必须有三个主节点。Redisson的集群模式的使用方法如下:

      ClusterServersConfig clusterConfig = config.useClusterServers();

      ClusterServersConfig 类的设置参数如下:

      nodeAddresses(添加节点地址)

      可以通过host:port的格式来添加Redis集群节点的地址。多个节点可以一次性批量添加。
      scanInterval(集群扫描间隔时间)
      默认值: 1000
      对Redis集群节点状态扫描的时间间隔。单位是毫秒。

      slots(分片数量)

      默认值: 231 用于指定数据分片过程中的分片数量。支持数据分片/框架结构有:集(Set)映射(Map)、BitSet、Bloom filter, Spring CacheHibernate Cache等.

      readMode(读取操作的负载均衡模式)

      默认值: SLAVE(只在从服务节点里读取)
      注:在从服务节点里读取的数据说明已经至少有两个节点保存了该数据,确保了数据的高可用性。
      设置读取操作选择节点的模式。 可用值为: SLAVE- 只在从服务节点里读取。 MASTER- 只在主服务节点里读取。 MASTER_SLAVE - 在主从服务节点里都可以读取。

      subscriptionMode(订阅操作的负载均衡模式)

      默认值:SLAVE(只在从服务节点里订阅)
      设置订阅操作选择节点的模式。 可用值为:SLAVE - 只在从服务节点里订阅。 MASTER - 只在主服务节点里订阅。

      loadBalancer(负载均衡算法类的选择)

      默认值: org.redisson.connection.balancer.RoundRobinLoadBalancer
      在多Redis服务节点的环境里,可以选用以下几种负载均衡方式选择一个节点: org.redisson.connection.balancer.WeightedRoundRobinBalancer - 权重轮询调度算法 org.redisson.connection.balancer.RoundRobinLoadBalancer- 轮询调度算法 org.redisson.connection.balancer.RandomLoadBalancer - 随机调度算法

      subscriptionConnectionMinimumIdleSize(从节点发布和订阅连接的最小空闲连接数)

      默认值:1
      多从节点的环境里,每个 从服务节点里用于发布和订阅连接的最小保持连接数(长连接)。Redisson内部经常通过发布和订阅来实现许多功能。长期保持一定数量的发布订阅连接是必须的。

      subscriptionConnectionPoolSize(从节点发布和订阅连接池大小)

      默认值:50
      多从节点的环境里,每个 从服务节点里用于发布和订阅连接的连接池最大容量。连接池的连接数量自动弹性伸缩。

      slaveConnectionMinimumIdleSize(从节点最小空闲连接数)

      默认值:32
      多从节点的环境里,每个 从服务节点里用于普通操作(非 发布和订阅)的最小保持连接数(长连接)。长期保持一定数量的连接有利于提高瞬时读取反映速度。

      slaveConnectionPoolSize(从节点连接池大小)

      默认值:64
      多从节点的环境里,每个 从服务节点里用于普通操作(非 发布和订阅)连接的连接池最大容量。连接池的连接数量自动弹性伸缩。

      masterConnectionMinimumIdleSize(主节点最小空闲连接数)

      默认值:32
      多节点的环境里,每个 主节点的最小保持连接数(长连接)。长期保持一定数量的连接有利于提高瞬时写入反应速度。

      masterConnectionPoolSize(主节点连接池大小)

      默认值:64
      多主节点的环境里,每个 主节点的连接池最大容量。连接池的连接数量自动弹性伸缩。

      idleConnectionTimeout(连接空闲超时,单位:毫秒)

      默认值:10000
      如果当前连接池里的连接数量超过了最小空闲连接数,而同时有连接空闲时间超过了该数值,那么这些连接将会自动被关闭,并从连接池里去掉。时间单位是毫秒。

      connectTimeout(连接超时,单位:毫秒)

      默认值:10000
      同任何节点建立连接时的等待超时。时间单位是毫秒。

      timeout(命令等待超时,单位:毫秒)

      默认值:3000
      等待节点回复命令的时间。该时间从命令发送成功时开始计时。

      retryAttempts(命令失败重试次数)

      默认值:3
      如果尝试达到 retryAttempts(命令失败重试次数) 仍然不能将命令发送至某个指定的节点时,将抛出错误。如果尝试在此限制之内发送成功,则开始启用 timeout(命令等待超时) 计时。

      retryInterval(命令重试发送时间间隔,单位:毫秒)

      默认值:1500
      在某个节点执行相同或不同命令时,连续 失败 failedAttempts(执行失败最大次数) 时,该节点将被从可用节点列表里清除,直到 reconnectionTimeout(重新连接时间间隔) 超时以后再次尝试。

      password(密码)

      默认值:null
      用于节点身份验证的密码。

      subscriptionsPerConnection(单个连接最大订阅数量)

      默认值:5
      每个连接的最大订阅数量。

      clientName(客户端名称)

      默认值:null
      在Redis节点里显示的客户端名称。

      sslEnableEndpointIdentification(启用SSL终端识别)

      默认值:true

      开启SSL终端识别能力。

      sslProvider(SSL实现方式)

      默认值:JDK
      确定采用哪种方式(JDK或OPENSSL)来实现SSL连接。

      sslTruststore(SSL信任证书库路径)

      默认值:null
      指定SSL信任证书库的路径。

      sslTruststorePassword(SSL信任证书库密码)

      默认值:null
      指定SSL信任证书库的密码。

      sslKeystore(SSL钥匙库路径)

      默认值:null
      指定SSL钥匙库的路径。

      sslKeystorePassword(SSL钥匙库密码)

      默认值:null
      指定SSL钥匙库的密码。

      4.2. 通过YAML文件配置集群模式

      配置集群模式可以通过指定一个YAML格式的文件来实现。以下是YAML格式的配置文件样本。文件中的字段名称必须与ClusterServersConfigConfig对象里的字段名称相符。

      ---
      clusterServersConfig:
        idleConnectionTimeout: 10000
        connectTimeout: 10000
        timeout: 3000
        retryAttempts: 3
        retryInterval: 1500
        password: null
        subscriptionsPerConnection: 5
        clientName: null
        loadBalancer: !<org.redisson.connection.balancer.RoundRobinLoadBalancer> {}
        slaveSubscriptionConnectionMinimumIdleSize: 1
        slaveSubscriptionConnectionPoolSize: 50
        slaveConnectionMinimumIdleSize: 32
        slaveConnectionPoolSize: 64
        masterConnectionMinimumIdleSize: 32
        masterConnectionPoolSize: 64
        readMode: "SLAVE"
        nodeAddresses:
        - "redis://127.0.0.1:7004"
        - "redis://127.0.0.1:7001"
        - "redis://127.0.0.1:7000"
        scanInterval: 1000
      threads: 0
      nettyThreads: 0
      codec: !<org.redisson.codec.JsonJacksonCodec> {}
      "transportMode":"NIO"
      

        5. 云托管模式

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

        程序化配置云托管模式的方法如下:

        Config config = new Config();
        config.useReplicatedServers()
            .setScanInterval(2000) // 主节点变化扫描间隔时间
            //可以用"rediss://"来启用SSL连接
            .addNodeAddress("redis://127.0.0.1:7000", "redis://127.0.0.1:7001")
            .addNodeAddress("redis://127.0.0.1:7002");
        

        RedissonClient redisson = Redisson.create(config);

          5.1. 云托管模式设置

          Redisson的云托管模式的使用方法如下: ReplicatedServersConfig replicatedConfig = config.useReplicatedServers();

          ReplicatedServersConfig 类的设置参数如下:

          nodeAddresses(节点地址)

          可以通过host:port的格式来指定云托管模式的多个Redis集群节点的地址。多个节点可以一次性批量添加。所有的主从节点必须在配置阶段全部体现出来。

          scanInterval(主节点变化扫描间隔时间)

          默认值: 1000
          对主节点变化节点状态扫描的时间间隔。单位是毫秒。

          loadBalancer(负载均衡算法类的选择)

          默认值: org.redisson.connection.balancer.RoundRobinLoadBalancer
          在使用多个Elasticache Redis服务节点的环境里,可以选用以下几种负载均衡方式选择一个节点: org.redisson.connection.balancer.WeightedRoundRobinBalancer - 权重轮询调度算法 org.redisson.connection.balancer.RoundRobinLoadBalancer - 轮询调度算法 org.redisson.connection.balancer.RandomLoadBalancer- 随机调度算法

          dnsMonitoringInterval(DNS监控间隔,单位:毫秒)

          默认值:5000
          用来指定检查节点DNS变化的时间间隔。使用的时候应该确保JVM里的DNS数据的缓存时间保持在足够低的范围才有意义。用-1来禁用该功能。

          subscriptionConnectionMinimumIdleSize(从节点发布和订阅连接的最小空闲连接数)

          默认值:1
          多从节点的环境里,每个 从服务节点里用于发布和订阅连接的最小保持连接数(长连接)。Redisson内部经常通过发布和订阅来实现许多功能。长期保持一定数量的发布订阅连接是必须的。

          subscriptionConnectionPoolSize(从节点发布和订阅连接池大小)

          默认值:50
          多从节点的环境里,每个 从服务节点里用于发布和订阅连接的连接池最大容量。连接池的连接数量自动弹性伸缩。

          slaveConnectionMinimumIdleSize(从节点最小空闲连接数)

          默认值:32
          多从节点的环境里,每个 从服务节点里用于普通操作(非 发布和订阅)的最小保持连接数(长连接)。长期保持一定数量的连接有利于提高瞬时读取反映速度。

          slaveConnectionPoolSize(从节点连接池大小)

          默认值:64
          多从节点的环境里,每个 从服务节点里用于普通操作(非 发布和订阅)连接的连接池最大容量。连接池的连接数量自动弹性伸缩。

          masterConnectionMinimumIdleSize(主节点最小空闲连接数)

          默认值:32
          多从节点的环境里,每个 主节点的最小保持连接数(长连接)。长期保持一定数量的连接有利于提高瞬时写入反应速度。

          masterConnectionPoolSize(主节点连接池大小)

          默认值:64
          主节点的连接池最大容量。连接池的连接数量自动弹性伸缩。

          idleConnectionTimeout(连接空闲超时,单位:毫秒)

          默认值:10000
          如果当前连接池里的连接数量超过了最小空闲连接数,而同时有连接空闲时间超过了该数值,那么这些连接将会自动被关闭,并从连接池里去掉。时间单位是毫秒。

          readMode(读取操作的负载均衡模式)

          默认值: SLAVE(只在从服务节点里读取)
          注:在从服务节点里读取的数据说明已经至少有两个节点保存了该数据,确保了数据的高可用性。
          设置读取操作选择节点的模式。 可用值为: SLAVE - 只在从服务节点里读取。 MASTER- 只在主服务节点里读取。 MASTER_SLAVE - 在主从服务节点里都可以读取。

          subscriptionMode(订阅操作的负载均衡模式)

          默认值:SLAVE(只在从服务节点里订阅)
          设置订阅操作选择节点的模式。 可用值为: SLAVE - 只在从服务节点里订阅。MASTER - 只在主服务节点里订阅。

          connectTimeout(连接超时,单位:毫秒)

          默认值:10000
          同任何节点建立连接时的等待超时。时间单位是毫秒。

          timeout(命令等待超时,单位:毫秒)

          默认值:3000
          等待节点回复命令的时间。该时间从命令发送成功时开始计时。

          retryAttempts(命令失败重试次数)

          默认值:3
          如果尝试达到 retryAttempts(命令失败重试次数) 仍然不能将命令发送至某个指定的节点时,将抛出错误。如果尝试在此限制之内发送成功,则开始启用 timeout(命令等待超时) 计时。

          retryInterval(命令重试发送时间间隔,单位:毫秒)

          默认值:1500
          在某个节点执行相同或不同命令时,连续 失败 failedAttempts(执行失败最大次数) 时,该节点将被从可用节点列表里清除,直到 reconnectionTimeout(重新连接时间间隔) 超时以后再次尝试。

          database(数据库编号)

          默认值:0
          尝试连接的数据库编号。

          password(密码)

          默认值:null
          用于节点身份验证的密码。

          subscriptionsPerConnection(单个连接最大订阅数量)

          默认值:5
          每个连接的最大订阅数量。

          clientName(客户端名称)

          默认值:null
          在Redis节点里显示的客户端名称。

          sslEnableEndpointIdentification(启用SSL终端识别)

          默认值:true
          开启SSL终端识别能力。

          sslProvider(SSL实现方式)

          默认值:JDK
          确定采用哪种方式(JDK或OPENSSL)来实现SSL连接。

          sslTruststore(SSL信任证书库路径)

          默认值:null
          指定SSL信任证书库的路径。

          sslTruststorePassword(SSL信任证书库密码)

          默认值:null
          指定SSL信任证书库的密码。

          sslKeystore(SSL钥匙库路径)

          默认值:null
          指定SSL钥匙库的路径。

          sslKeystorePassword(SSL钥匙库密码)

          默认值:null
          指定SSL钥匙库的密码。

          5.2. 通过YAML文件配置集群模式

          配置云托管模式可以通过指定一个YAML格式的文件来实现。以下是YAML格式的配置文件样本。文件中的字段名称必须与ReplicatedServersConfigConfig对象里的字段名称相符。

          ---
          replicatedServersConfig:
            idleConnectionTimeout: 10000
            connectTimeout: 10000
            timeout: 3000
            retryAttempts: 3
            retryInterval: 1500
            password: null
            subscriptionsPerConnection: 5
            clientName: null
            loadBalancer: !<org.redisson.connection.balancer.RoundRobinLoadBalancer> {}
            slaveSubscriptionConnectionMinimumIdleSize: 1
            slaveSubscriptionConnectionPoolSize: 50
            slaveConnectionMinimumIdleSize: 32
            slaveConnectionPoolSize: 64
            masterConnectionMinimumIdleSize: 32
            masterConnectionPoolSize: 64
            readMode: "SLAVE"
            nodeAddresses:
            - "redis://127.0.0.1:2812"
            - "redis://127.0.0.1:2815"
            - "redis://127.0.0.1:2813"
            scanInterval: 1000
          threads: 0
          nettyThreads: 0
          codec: !<org.redisson.codec.JsonJacksonCodec> {}
          "transportMode":"NIO"
          

            6. 单Redis节点模式

            程序化配置方法:

            // 默认连接地址 127.0.0.1:6379
            RedissonClient redisson = Redisson.create();
            

            Config config = new Config();
            config.useSingleServer().setAddress("myredisserver:6379");
            RedissonClient redisson = Redisson.create(config);

              6.1. 单节点设置

              Redis程序的配置和架设文档在这里。Redisson的单Redis节点模式的使用方法如下: SingleServerConfig singleConfig = config.useSingleServer();

              SingleServerConfig 类的设置参数如下:

              address(节点地址)

              可以通过host:port的格式来指定节点地址。

              subscriptionConnectionMinimumIdleSize(发布和订阅连接的最小空闲连接数)

              默认值:1
              用于发布和订阅连接的最小保持连接数(长连接)。Redisson内部经常通过发布和订阅来实现许多功能。长期保持一定数量的发布订阅连接是必须的。

              subscriptionConnectionPoolSize(发布和订阅连接池大小)

              默认值:50
              用于发布和订阅连接的连接池最大容量。连接池的连接数量自动弹性伸缩。

              connectionMinimumIdleSize(最小空闲连接数)

              默认值:32
              最小保持连接数(长连接)。长期保持一定数量的连接有利于提高瞬时写入反应速度。

              connectionPoolSize(连接池大小)

              默认值:64
              在启用该功能以后,Redisson将会监测DNS的变化情况。

              dnsMonitoringInterval(DNS监测时间间隔,单位:毫秒)

              默认值:5000
              监测DNS的变化情况的时间间隔。

              idleConnectionTimeout(连接空闲超时,单位:毫秒)

              默认值:10000
              如果当前连接池里的连接数量超过了最小空闲连接数,而同时有连接空闲时间超过了该数值,那么这些连接将会自动被关闭,并从连接池里去掉。时间单位是毫秒。

              connectTimeout(连接超时,单位:毫秒)

              默认值:10000
              同节点建立连接时的等待超时。时间单位是毫秒。

              timeout(命令等待超时,单位:毫秒)

              默认值:3000
              等待节点回复命令的时间。该时间从命令发送成功时开始计时。

              retryAttempts(命令失败重试次数)

              默认值:3

              如果尝试达到 retryAttempts(命令失败重试次数) 仍然不能将命令发送至某个指定的节点时,将抛出错误。如果尝试在此限制之内发送成功,则开始启用 timeout(命令等待超时) 计时。

              retryInterval(命令重试发送时间间隔,单位:毫秒)

              默认值:1500
              在某个节点执行相同或不同命令时,连续 失败 failedAttempts(执行失败最大次数) 时,该节点将被从可用节点列表里清除,直到 reconnectionTimeout(重新连接时间间隔) 超时以后再次尝试

              database(数据库编号)

              默认值:0
              尝试连接的数据库编号。

              password(密码)

              默认值:null
              用于节点身份验证的密码。

              subscriptionsPerConnection(单个连接最大订阅数量)

              默认值:5
              每个连接的最大订阅数量。

              clientName(客户端名称)

              默认值:null
              在Redis节点里显示的客户端名称。

              sslEnableEndpointIdentification(启用SSL终端识别)

              默认值:true
              开启SSL终端识别能力。

              sslProvider(SSL实现方式)

              默认值:JDK
              确定采用哪种方式(JDK或OPENSSL)来实现SSL连接。

              sslTruststore(SSL信任证书库路径)

              默认值:null
              指定SSL信任证书库的路径。

              sslTruststorePassword(SSL信任证书库密码)

              默认值:null
              指定SSL信任证书库的密码。

              sslKeystore(SSL钥匙库路径)

              默认值:null
              指定SSL钥匙库的路径。

              sslKeystorePassword(SSL钥匙库密码)

              默认值:null
              指定SSL钥匙库的密码。

              6.2. 通过YAML文件配置集群模式

              配置单节点模式可以通过指定一个YAML格式的文件来实现。以下是YAML格式的配置文件样本。文件中的字段名称必须与SingleServerConfigConfig对象里的字段名称相符。

              ---
              singleServerConfig:
                idleConnectionTimeout: 10000
                connectTimeout: 10000
                timeout: 3000
                retryAttempts: 3
                retryInterval: 1500
                password: null
                subscriptionsPerConnection: 5
                clientName: null
                address: "redis://127.0.0.1:6379"
                subscriptionConnectionMinimumIdleSize: 1
                subscriptionConnectionPoolSize: 50
                connectionMinimumIdleSize: 32
                connectionPoolSize: 64
                database: 0
                dnsMonitoringInterval: 5000
              threads: 0
              nettyThreads: 0
              codec: !<org.redisson.codec.JsonJacksonCodec> {}
              "transportMode":"NIO"
              

                7. 哨兵模式

                程序化配置哨兵模式的方法如下:

                Config config = new Config();
                config.useSentinelServers()
                    .setMasterName("mymaster")
                    //可以用"rediss://"来启用SSL连接
                    .addSentinelAddress("127.0.0.1:26389", "127.0.0.1:26379")
                    .addSentinelAddress("127.0.0.1:26319");
                

                RedissonClient redisson = Redisson.create(config);

                  7.1. 哨兵模式设置

                  配置Redis哨兵服务的官方文档在这里。Redisson的哨兵模式的使用方法如下:SentinelServersConfig sentinelConfig = config.useSentinelServers();

                  SentinelServersConfig类的设置参数如下:

                  dnsMonitoringInterval(DNS监控间隔,单位:毫秒)

                  默认值:5000

                  用来指定检查节点DNS变化的时间间隔。使用的时候应该确保JVM里的DNS数据的缓存时间保持在足够低的范围才有意义。用-1来禁用该功能。

                  masterName(主服务器的名称)

                  主服务器的名称是哨兵进程中用来监测主从服务切换情况的。

                  addSentinelAddress(添加哨兵节点地址)

                  可以通过host:port的格式来指定哨兵节点的地址。多个节点可以一次性批量添加。

                  readMode(读取操作的负载均衡模式)

                  默认值:SLAVE(只在从服务节点里读取)

                  注:在从服务节点里读取的数据说明已经至少有两个节点保存了该数据,确保了数据的高可用性。

                  设置读取操作选择节点的模式。 可用值为: SLAVE- 只在从服务节点里读取。 MASTER - 只在主服务节点里读取。 MASTER_SLAVE- 在主从服务节点里都可以读取。

                  subscriptionMode(订阅操作的负载均衡模式)

                  默认值:SLAVE(只在从服务节点里订阅)

                  设置订阅操作选择节点的模式。 可用值为: SLAVE - 只在从服务节点里订阅。 MASTER- 只在主服务节点里订阅。

                  loadBalancer(负载均衡算法类的选择)

                  默认值: org.redisson.connection.balancer.RoundRobinLoadBalancer

                  在使用多个Redis服务节点的环境里,可以选用以下几种负载均衡方式选择一个节点: org.redisson.connection.balancer.WeightedRoundRobinBalancer- 权重轮询调度算法 org.redisson.connection.balancer.RoundRobinLoadBalancer - 轮询调度算法 org.redisson.connection.balancer.RandomLoadBalancer - 随机调度算法

                  subscriptionConnectionMinimumIdleSize(从节点发布和订阅连接的最小空闲连接数)

                  默认值:1

                  多从节点的环境里,每个 从服务节点里用于发布和订阅连接的最小保持连接数(长连接)。Redisson内部经常通过发布和订阅来实现许多功能。长期保持一定数量的发布订阅连接是必须的。

                  subscriptionConnectionPoolSize(从节点发布和订阅连接池大小)

                  默认值:50

                  多从节点的环境里,每个 从服务节点里用于发布和订阅连接的连接池最大容量。连接池的连接数量自动弹性伸缩。

                  slaveConnectionMinimumIdleSize(从节点最小空闲连接数)

                  默认值:32

                  多从节点的环境里,每个 从服务节点里用于普通操作(非 发布和订阅)的最小保持连接数(长连接)。长期保持一定数量的连接有利于提高瞬时读取反映速度。

                  slaveConnectionPoolSize(从节点连接池大小)

                  默认值:64
                  多从节点的环境里,每个 从服务节点里用于普通操作(非 发布和订阅)连接的连接池最大容量。连接池的连接数量自动弹性伸缩。

                  masterConnectionMinimumIdleSize(主节点最小空闲连接数)

                  默认值:32

                  多从节点的环境里,每个 主节点的最小保持连接数(长连接)。长期保持一定数量的连接有利于提高瞬时写入反应速度。

                  masterConnectionPoolSize(主节点连接池大小)

                  默认值:64

                  主节点的连接池最大容量。连接池的连接数量自动弹性伸缩。

                  idleConnectionTimeout(连接空闲超时,单位:毫秒)

                  默认值:10000

                  如果当前连接池里的连接数量超过了最小空闲连接数,而同时有连接空闲时间超过了该数值,那么这些连接将会自动被关闭,并从连接池里去掉。时间单位是毫秒。

                  connectTimeout(连接超时,单位:毫秒)

                  默认值:10000

                  同任何节点建立连接时的等待超时。时间单位是毫秒。

                  timeout(命令等待超时,单位:毫秒)

                  默认值:3000

                  等待节点回复命令的时间。该时间从命令发送成功时开始计时。

                  retryAttempts(命令失败重试次数)

                  默认值:3

                  如果尝试达到 retryAttempts(命令失败重试次数) 仍然不能将命令发送至某个指定的节点时,将抛出错误。如果尝试在此限制之内发送成功,则开始启用 timeout(命令等待超时) 计时。

                  retryInterval(命令重试发送时间间隔,单位:毫秒)

                  默认值:1500

                  在某个节点执行相同或不同命令时,连续 失败 failedAttempts(执行失败最大次数) 时,该节点将被从可用节点列表里清除,直到 reconnectionTimeout(重新连接时间间隔) 超时以后再次尝试。

                  database(数据库编号)

                  默认值:0

                  尝试连接的数据库编号。

                  password(密码)

                  默认值:null

                  用于节点身份验证的密码。

                  subscriptionsPerConnection(单个连接最大订阅数量)

                  默认值:5

                  每个连接的最大订阅数量。

                  clientName(客户端名称)

                  默认值:null

                  在Redis节点里显示的客户端名称。

                  sslEnableEndpointIdentification(启用SSL终端识别)

                  默认值:true

                  开启SSL终端识别能力。

                  sslProvider(SSL实现方式)

                  默认值:JDK

                  确定采用哪种方式(JDK或OPENSSL)来实现SSL连接。

                  sslTruststore(SSL信任证书库路径)

                  默认值:null

                  指定SSL信任证书库的路径。

                  sslTruststorePassword(SSL信任证书库密码)

                  默认值:null

                  指定SSL信任证书库的密码。

                  sslKeystore(SSL钥匙库路径)

                  默认值:null

                  指定SSL钥匙库的路径。

                  sslKeystorePassword(SSL钥匙库密码)

                  默认值:null

                  指定SSL钥匙库的密码。

                  7.2. 通过YAML文件配置集群模式

                  配置哨兵模式可以通过指定一个YAML格式的文件来实现。以下是YAML格式的配置文件样本。文件中的字段名称必须与SentinelServersConfig和Config对象里的字段名称相符。

                  ---
                  sentinelServersConfig:
                    idleConnectionTimeout: 10000
                    connectTimeout: 10000
                    timeout: 3000
                    retryAttempts: 3
                    retryInterval: 1500
                    password: null
                    subscriptionsPerConnection: 5
                    clientName: null
                    loadBalancer: !<org.redisson.connection.balancer.RoundRobinLoadBalancer> {}
                    slaveSubscriptionConnectionMinimumIdleSize: 1
                    slaveSubscriptionConnectionPoolSize: 50
                    slaveConnectionMinimumIdleSize: 32
                    slaveConnectionPoolSize: 64
                    masterConnectionMinimumIdleSize: 32
                    masterConnectionPoolSize: 64
                    readMode: "SLAVE"
                    sentinelAddresses:
                    - "redis://127.0.0.1:26379"
                    - "redis://127.0.0.1:26389"
                    masterName: "mymaster"
                    database: 0
                  threads: 0
                  nettyThreads: 0
                  codec: !<org.redisson.codec.JsonJacksonCodec> {}
                  "transportMode":"NIO"
                  

                    8. 主从模式

                    程序化配置主从模式的用法:

                    Config config = new Config();
                    config.useMasterSlaveServers()
                        //可以用"rediss://"来启用SSL连接
                        .setMasterAddress("redis://127.0.0.1:6379")
                        .addSlaveAddress("redis://127.0.0.1:6389", "redis://127.0.0.1:6332", "redis://127.0.0.1:6419")
                        .addSlaveAddress("redis://127.0.0.1:6399");
                    

                    RedissonClient redisson = Redisson.create(config);

                      8.1. 主从模式设置

                      介绍配置Redis主从服务组态的文档在这里. Redisson的主从模式的使用方法如下:MasterSlaveServersConfig masterSlaveConfig = config.useMasterSlaveServers();

                      MasterSlaveServersConfig 类的设置参数如下:

                      dnsMonitoringInterval(DNS监控间隔,单位:毫秒)

                      默认值:5000

                      用来指定检查节点DNS变化的时间间隔。使用的时候应该确保JVM里的DNS数据的缓存时间保持在足够低的范围才有意义。用-1来禁用该功能。

                      masterAddress(主节点地址)

                      可以通过host:port的格式来指定主节点地址。

                      addSlaveAddress(添加从主节点地址)

                      可以通过host:port的格式来指定从节点的地址。多个节点可以一次性批量添加。

                      readMode(读取操作的负载均衡模式)

                      默认值: SLAVE(只在从服务节点里读取)

                      注:在从服务节点里读取的数据说明已经至少有两个节点保存了该数据,确保了数据的高可用性。

                      设置读取操作选择节点的模式。 可用值为: SLAVE - 只在从服务节点里读取。MASTER - 只在主服务节点里读取。 MASTER_SLAVE - 在主从服务节点里都可以读取。

                      subscriptionMode(订阅操作的负载均衡模式)

                      默认值:SLAVE(只在从服务节点里订阅)

                      设置订阅操作选择节点的模式。 可用值为: SLAVE - 只在从服务节点里订阅。 MASTER - 只在主服务节点里订阅。

                      loadBalancer(负载均衡算法类的选择)

                      默认值: org.redisson.connection.balancer.RoundRobinLoadBalancer

                      在使用多个Redis服务节点的环境里,可以选用以下几种负载均衡方式选择一个节点: org.redisson.connection.balancer.WeightedRoundRobinBalancer - 权重轮询调度算法 org.redisson.connection.balancer.RoundRobinLoadBalancer- 轮询调度算法 org.redisson.connection.balancer.RandomLoadBalancer - 随机调度算法

                      subscriptionConnectionMinimumIdleSize(从节点发布和订阅连接的最小空闲连接数)

                      默认值:1

                      多从节点的环境里,每个 从服务节点里用于发布和订阅连接的最小保持连接数(长连接)。Redisson内部经常通过发布和订阅来实现许多功能。长期保持一定数量的发布订阅连接是必须的。

                      subscriptionConnectionPoolSize(从节点发布和订阅连接池大小)

                      默认值:50

                      多从节点的环境里,每个 从服务节点里用于发布和订阅连接的连接池最大容量。连接池的连接数量自动弹性伸缩。

                      slaveConnectionMinimumIdleSize(从节点最小空闲连接数)

                      默认值:32

                      多从节点的环境里,每个 从服务节点里用于普通操作(非 发布和订阅)的最小保持连接数(长连接)。长期保持一定数量的连接有利于提高瞬时读取反映速度。

                      slaveConnectionPoolSize(从节点连接池大小)

                      默认值:64

                      多从节点的环境里,每个 从服务节点里用于普通操作(非 发布和订阅)连接的连接池最大容量。连接池的连接数量自动弹性伸缩。

                      masterConnectionMinimumIdleSize(主节点最小空闲连接数)

                      默认值:32

                      多从节点的环境里,每个 主节点的最小保持连接数(长连接)。长期保持一定数量的连接有利于提高瞬时写入反应速度。

                      masterConnectionPoolSize(主节点连接池大小)

                      默认值:64

                      主节点的连接池最大容量。连接池的连接数量自动弹性伸缩。

                      idleConnectionTimeout(连接空闲超时,单位:毫秒)

                      默认值:10000

                      如果当前连接池里的连接数量超过了最小空闲连接数,而同时有连接空闲时间超过了该数值,那么这些连接将会自动被关闭,并从连接池里去掉。时间单位是毫秒。

                      connectTimeout(连接超时,单位:毫秒)

                      默认值:10000

                      同任何节点建立连接时的等待超时。时间单位是毫秒。

                      timeout(命令等待超时,单位:毫秒)

                      默认值:3000

                      等待节点回复命令的时间。该时间从命令发送成功时开始计时。

                      retryAttempts(命令失败重试次数)

                      默认值:3

                      如果尝试达到 retryAttempts(命令失败重试次数) 仍然不能将命令发送至某个指定的节点时,将抛出错误。如果尝试在此限制之内发送成功,则开始启用 timeout(命令等待超时) 计时。

                      retryInterval(命令重试发送时间间隔,单位:毫秒)

                      默认值:1500

                      在某个节点执行相同或不同命令时,连续 失败 failedAttempts(执行失败最大次数) 时,该节点将被从可用节点列表里清除,直到 reconnectionTimeout(重新连接时间间隔) 超时以后再次尝试。

                      database(数据库编号)

                      默认值:0

                      尝试连接的数据库编号。

                      password(密码)

                      默认值:null

                      用于节点身份验证的密码。

                      subscriptionsPerConnection(单个连接最大订阅数量)

                      默认值:5

                      每个连接的最大订阅数量。

                      clientName(客户端名称)

                      默认值:null

                      在Redis节点里显示的客户端名称。

                      sslEnableEndpointIdentification(启用SSL终端识别)

                      默认值:true

                      开启SSL终端识别能力。

                      sslProvider(SSL实现方式)

                      默认值:JDK

                      确定采用哪种方式(JDK或OPENSSL)来实现SSL连接。

                      sslTruststore(SSL信任证书库路径)

                      默认值:null

                      指定SSL信任证书库的路径。

                      sslTruststorePassword(SSL信任证书库密码)

                      默认值:null

                      指定SSL信任证书库的密码。

                      sslKeystore(SSL钥匙库路径)

                      默认值:null

                      指定SSL钥匙库的路径。

                      sslKeystorePassword(SSL钥匙库密码)

                      默认值:null

                      指定SSL钥匙库的密码。

                      8.2. 通过YAML文件配置集群模式

                      配置主从模式可以通过指定一个YAML格式的文件来实现。以下是YAML格式的配置文件样本。文件中的字段名称必须与MasterSlaveServersConfigConfig对象里的字段名称相符。

                      ---
                      masterSlaveServersConfig:
                        idleConnectionTimeout: 10000
                        connectTimeout: 10000
                        timeout: 3000
                        retryAttempts: 3
                        retryInterval: 1500
                        failedAttempts: 3
                        password: null
                        subscriptionsPerConnection: 5
                        clientName: null
                        loadBalancer: !<org.redisson.connection.balancer.RoundRobinLoadBalancer> {}
                        slaveSubscriptionConnectionMinimumIdleSize: 1
                        slaveSubscriptionConnectionPoolSize: 50
                        slaveConnectionMinimumIdleSize: 32
                        slaveConnectionPoolSize: 64
                        masterConnectionMinimumIdleSize: 32
                        masterConnectionPoolSize: 64
                        readMode: "SLAVE"
                        slaveAddresses:
                        - "redis://127.0.0.1:6381"
                        - "redis://127.0.0.1:6380"
                        masterAddress: "redis://127.0.0.1:6379"
                        database: 0
                      threads: 0
                      nettyThreads: 0
                      codec: !<org.redisson.codec.JsonJacksonCodec> {}
                      "transportMode":"NIO"
                      
                        文章知识点与官方知识档案匹配,可进一步学习相关知识

                        与[转帖]Redission 配置方法相似的内容:

                        [转帖]Redission 配置方法

                        Redission 配置方法 1. 程序化配置方法2. 文件方式配置2.1 通过YAML格式配置 3. 常用设置codec(编码)threads(线程池数量)nettyThreads (Netty线程池数量)executor(线程池)eventLoopGrouptransportMode(传输模式)

                        [转帖]Redis客户端Jedis、Lettuce、Redisson

                        https://www.jianshu.com/p/90a9e2eccd73 在SpringBoot2.x之后,原来使用的jedis被替换为了lettuce Jedis:采用的直连,BIO网络模型 Jedis有一个问题:多个线程使用一个连接的时候线程不安全。 解决思路是: 使用连接池,为每个请求创建

                        [转帖]

                        Linux ubuntu20.04 网络配置(图文教程) 因为我是刚装好的最小系统,所以很多东西都没有,在开始配置之前需要做下准备 环境准备 系统:ubuntu20.04网卡:双网卡 网卡一:供连接互联网使用网卡二:供连接内网使用(看情况,如果一张网卡足够,没必要做第二张网卡) 工具: net-to

                        [转帖]

                        https://cloud.tencent.com/developer/article/2168105?areaSource=104001.13&traceId=zcVNsKTUApF9rNJSkcCbB 前言 Redis作为高性能的内存数据库,在大数据量的情况下也会遇到性能瓶颈,日常开发中只有时刻

                        [转帖]ISV 、OSV、 SIG 概念

                        ISV 、OSV、 SIG 概念 2022-10-14 12:29530原创大杂烩 本文链接:https://www.cndba.cn/dave/article/108699 1. ISV: Independent Software Vendors “独立软件开发商”,特指专门从事软件的开发、生产、

                        [转帖]Redis 7 参数 修改 说明

                        2022-06-16 14:491800原创Redis 本文链接:https://www.cndba.cn/dave/article/108066 在之前的博客我们介绍了Redis 7 的安装和配置,如下: Linux 7.8 平台 Redis 7 安装并配置开机自启动 操作手册https://ww

                        [转帖]HTTPS中间人攻击原理

                        https://www.zhihu.com/people/bei-ji-85/posts 背景 前一段时间,公司北京地区上线了一个HTTPS防火墙,用来监听HTTPS流量。防火墙上线之前,邮件通知给管理层,我从我老大那里听说这个事情的时候,说这个有风险,然后意外地发现,很多人原来都不知道HTTPS防

                        [转帖]关于字节序(大小端)的一点想法

                        https://www.zhihu.com/people/bei-ji-85/posts 今天在一个技术群里有人问起来了,当时有一些讨论(不完全都是我个人的观点),整理一下: 为什么网络字节序(多数情况下)是大端? 早年设备的缓存很小,先接收高字节能快速的判断报文信息:包长度(需要准备多大缓存)、地

                        [转帖]awk提取某一行某一列的数据

                        https://www.jianshu.com/p/dbcb7fe2da56 1、提取文件中第1列数据 awk '{print $1}' filename > out.txt 2、提取前2列的文件 awk `{print $1,$2}' filename > out.txt 3、打印完第一列,然后打

                        [转帖]awk 中 FS的用法

                        https://www.cnblogs.com/rohens-hbg/p/5510890.html 在openwrt文件 ar71xx.sh中 查询设备类型时,有这么一句, machine=$(awk 'BEGIN{FS="[ \t]+:[ \t]"} /machine/ {print $2}' /