Docker部署Redis Cluster

Docker部署Redis Cluster

1.结构
3主3从,hash槽算法负载均衡
2.端口
3主:7000、7001、7002 3从: 7003、7004、7005
3.配置文件
redis.conf

最小配置方案:(官网)

port xxx
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes

配置流程

/opt/redis
/7000/redis.conf
/7001/redis.conf
/7002/redis.conf
/7003/redis.conf
/7004/redis.conf
/7005/redis.conf
mkdir /opt/redis
cd /opt/redis
mkdir 7000 7001 7002 7003 7004 7005

cat <<EOF >7000/redis.conf
port 7000
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
EOF

4.启动6个redis实例

--net=host: 让docker容器直接使用宿主机的指定端口,不需要端口映射
redis-server /redis.conf:让redis服务以配置文件的配置方式运行
docker run -d --name redis7000 \
-v /opt/redis/7000/redis.conf:/redis.conf \
--net=host \
--restart=always \
redis \
redis-server /redis.conf 

5.开启集群配置

--cluster-replicas x:配置一台主机分配x台从机

在其中一个docker容器中执行:

docker exec -it redis7000 \
redis-cli --cluster create 192.168.64.150:7000 192.168.64.150:7001 \
192.168.64.150:7002 192.168.64.150:7003 192.168.64.150:7004 192.168.64.150:7005 \
--cluster-replicas 1

执行完成后,显示16384个哈希槽被覆盖:
在这里插入图片描述
6.查看集群信息

命令参数:-c:以集群方式访问 ; -p 指定redis的访问端口(不指定默认的为6379)
cluster info:查看集群信息
cluster nodes:查看集群节点信息
docker exec -it redis7000 redis-cli -c -p 7000
cluster info
cluster nodes

7.测试集群:

存数据:观察存放数据时,节点的切换存储 – 查询和存储会进行redis重定向

docker exec -it redis7000 redis-cli -c -p 7000
set a 1111111
set b 222222222
set c 333333333

在这里插入图片描述
8.Java API 测试 Redis集群(Spring封装的API):
使用Spring Data提供的Spring Data Redis工具类

yml配置

spring:
  redis:
    cluster:
      nodes:
        - 192.168.64.150:7000
        - 192.168.64.150:7001
        - 192.168.64.150:7002
        - 192.168.64.150:7003
        - 192.168.64.150:7004
        - 192.168.64.150:7005

JAVA实现

Redis Cluster Connection(API):
ConnectionFactory - RedisClusterConnection - CRUD operation
@SpringBootApplication
public class Application {
    /*
     * 测试redis集群
     * */
    @Autowired
    private RedisConnectionFactory factory;

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
    /*
    * spring执行流程:
    * 扫描 --> 创建实例 --> 依赖注入 --> @PostConstruct(用于执行一些自定义初始化操作)
    * */
    @PostConstruct
    public void test() {
        RedisClusterConnection cluster = factory.getClusterConnection();
        for (int i = 0; i < 100; i++) {
            String k = "k"+i;
            String v = "v"+i;
            cluster.set(k.getBytes(),v.getBytes());
        }
    }
}

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值