关联文章:

  • SpringBoot整合Redisson操作单节点Redis

上文使用Redisson对单节点的redis进行操作,但是在对于集群操作时需要不同的配置以及集群的搭建,本文就一起来探索使用docker的redis集群的搭建。

搭建集群Redis

本文Redis集群的搭建参考官方给出的搭建指导。
1.首先我们需要编写Redis的配置文件redis.conf

#redis的端口
port 7000
#关闭redis的保护模式
protected-mode no
#开启集群模式
cluster-enabled yes
#集群的配置文件,注:集群的配置文件不需要我们生成,redis会自动生成   
cluster-config-file nodes.conf
#集群超时时间
cluster-node-timeout 5000
#开始数据持久化
appendonly yes

同时,我们需要启动6个Redis服务,Redis官方是这样介绍的:

要让集群正常运作至少需要三个主节点,不过在刚开始试用集群功能时, 强烈建议使用六个节点: 其中三个为主节点, 而其余三个则是各个主节点的从节点。

我们把上述的配置文件复制5份,把内部的port配置项改成70007005,文件也根据端口名分别命名成redis7000.confredis7005.conf,之后运行docker命令把容器都启动起来。

docker run --net=host -d -v  /usr/nis/redis/redis7000.conf:/usr/local/etc/redis/redis.conf --name redis7000 redis redis-server /usr/local/etc/redis/redis.conf

docker run --net=host -d -v  /usr/nis/redis/redis7001.conf:/usr/local/etc/redis/redis.conf --name redis7001 redis redis-server /usr/local/etc/redis/redis.conf

docker run --net=host -d -v  /usr/nis/redis/redis7002.conf:/usr/local/etc/redis/redis.conf --name redis7002 redis redis-server /usr/local/etc/redis/redis.conf

docker run --net=host -d -v  /usr/nis/redis/redis7003.conf:/usr/local/etc/redis/redis.conf --name redis7003 redis redis-server /usr/local/etc/redis/redis.conf

docker run --net=host -d -v  /usr/nis/redis/redis7004.conf:/usr/local/etc/redis/redis.conf --name redis7004 redis redis-server /usr/local/etc/redis/redis.conf

docker run --net=host -d -v  /usr/nis/redis/redis7005.conf:/usr/local/etc/redis/redis.conf --name redis7005 redis redis-server /usr/local/etc/redis/redis.conf

注:如果启动起来后发现无法远程连接Redis请查看自己的防火墙是否开始,如果开启了防火墙,那么需要放行Redis的7000-7005端口

#端口放行
firewall-cmd  --add-port=7000/tcp  --permanent

firewall-cmd  --add-port=7001/tcp  --permanent

firewall-cmd  --add-port=7002/tcp  --permanent

firewall-cmd  --add-port=7003/tcp  --permanent

firewall-cmd  --add-port=7004/tcp  --permanent

firewall-cmd  --add-port=7005/tcp  --permanent
#重载防火墙配置
firewall-cmd --reload

然后选择一个redis容器进入容器内部

docker exec -it redis7000 bash

输入集群搭建命令,IP请根据读者自身实际情况修改

redis-cli --cluster create 192.168.2.66:7000 192.168.2.66:7001 192.168.2.66:7002 192.168.2.66:7003 192.168.2.66:7004 192.168.2.66:7005 --cluster-replicas 1

redisson使用trylock redisson使用集群_redis


随后Redis会自动生成3主3从的方案,然后输入yes,Redis就会开始自动分配

redisson使用trylock redisson使用集群_redisson使用trylock_02


分配完成后,集群就搭建完成了。

配置项添加

Java为例,需要在application.yml文件中添加集群化的配置

spring:
  cloud:
    redis:
      # 数据库索引
	  database: 0
	  # 地址
	  host: 127.0.0.1
	  # 端口
	  port: 6379
	  # 密码
	  password:
	  # 连接超时时间
	  timeout: 10s
      lettuce:
		pool:
		# 连接池中的最小空闲连接
		min-idle: 0
		# 连接池中的最大空闲连接
		max-idle: 8
		# 连接池的最大数据库连接数
		max-active: 8
		# #连接池最大阻塞等待时间(使用负值表示没有限制)
		max-wait: -1ms
    redisson:
      config: |
        clusterServersConfig:
          idleConnectionTimeout: 10000
          connectTimeout: 10000
          timeout: 3000
          retryAttempts: 3
          retryInterval: 1500
          failedSlaveReconnectionInterval: 3000
          failedSlaveCheckInterval: 60000
          subscriptionsPerConnection: 5
          clientName: null
          loadBalancer: !<org.redisson.connection.balancer.RoundRobinLoadBalancer> {}
          subscriptionConnectionMinimumIdleSize: 1
          subscriptionConnectionPoolSize: 50
          slaveConnectionMinimumIdleSize: 24
          slaveConnectionPoolSize: 64
          masterConnectionMinimumIdleSize: 24
          masterConnectionPoolSize: 64
          readMode: "SLAVE"
          subscriptionMode: "SLAVE"
          nodeAddresses:
          - "redis://192.168.2.66:7000"
          - "redis://192.168.2.66:7001"
          - "redis://192.168.2.66:7002"
          - "redis://192.168.2.66:7003"
          - "redis://192.168.2.66:7004"
          - "redis://192.168.2.66:7005"
          scanInterval: 1000
          pingConnectionInterval: 0
          keepAlive: false
          tcpNoDelay: false
        threads: 16
        nettyThreads: 32
        codec: !<org.redisson.codec.MarshallingCodec> {}
        transportMode: "NIO"

启动应用后,即可连接上Redis集群,进行锁操作。