Docker部署redis-cluster并集成SpringBoot

使用docker的方式进行部署redis集群

  1. 在 /data目录当中创建一个redis目录
mkdir /data/redis
  1. 在redis目录当中创建一个redis配置文件模板(用于后面批量创建对应的配置文件,配置文件当中主要是端口号的区别其他的配置参数基本一致,因此可以采用模板文件的方式进行创建)
cd /data/redis
vim redis-cluster.tmpl

在模板文件当中添加如下内容信息(IP记得换成自己的IP信息)

port ${PORT}
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
cluster-announce-ip 124.*.*.231
cluster-announce-port ${PORT}
cluster-announce-bus-port 1${PORT}
appendonly yes

内容添加完成之后保存退出

  1. 创建一个配置文件初始化脚本
vim init.sh
for port in $(seq 8001 8006); 
do 
  mkdir -p ./${port}/conf  
  PORT=${port} envsubst < ./redis-cluster.tmpl > ./${port}/conf/redis.conf 
  mkdir -p ./${port}/data; 
done

  1. 创建一个批量启动docker容器
vim start_docker.sh
for port in $(seq 8001 8006) 
do 
   docker run -it -d -p ${port}:${port} -p 1${port}:1${port} --privileged=true -v /data/redis/${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf  --privileged=true -v /data/redis/${port}/data:/data   --restart always --name redis-${port}    --sysctl net.core.somaxconn=1024 redis redis-server /usr/local/etc/redis/redis.conf; 
done

  1. 创建完成以上的所有基础文件信息之后,接下来就可以执行相关的脚本初始化出来六个基础的容器。执行完成之后使用docker ps命令查看当前的容器状态信息
    在这里插入图片描述

  2. 在容器当中创建对应的对应的集群处理。

docker exec -it redis-8001 bash

进入容器当中使用以下命令创建集群(注意换成自己的IP)

redis-cli --cluster create 124.*.*.231:8001 124.*.*.231:8002 124.*.*.231:8003 124.*.*.231:8004 124.*.*.231:8005 124.*.*.231:8006

在这里插入图片描述

此时在这个地方记得输入 yes 指令。到此redis-cluster集群算是已经创建完成。

在SpringBoot客户端当中完成redis集群的集成

在pom.xml文件当中增加以下依赖

<dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

并且在项目对应的配置文件当中增加以下信息(spring标签下面)
在这里插入图片描述
在项目当中增加一个redis配置文件信息

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;

@Configuration
public class RedisConfiguration {


    /**
     * springboot2.x 使用LettuceConnectionFactory 代替 RedisConnectionFactory
     * application.yml配置基本信息后,springboot2.x  RedisAutoConfiguration能够自动装配
     * LettuceConnectionFactory 和 RedisConnectionFactory 及其 RedisTemplate
     * @param redisConnectionFactory
     * @return
     */
    @Bean
    public RedisTemplate<String, Object> redisTemplate(LettuceConnectionFactory redisConnectionFactory){
        RedisTemplate<String, Object> redisTemplate = new RedisTemplate<String, Object>();
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
        redisTemplate.setHashKeySerializer(new StringRedisSerializer());
        redisTemplate.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());
        redisTemplate.setConnectionFactory(redisConnectionFactory);
        return redisTemplate;
    }

}

接下来就可以在项目当中直接使用 RedisTemplate进行管理对应的redis缓存数据信息

@Autowired
private RedisTemplate redisTemplate;
// 省略部分代码逻辑
redisTemplate.opsForHash().put("a","22",12);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值