使用docker的方式进行部署redis集群
- 在 /data目录当中创建一个redis目录
mkdir /data/redis
- 在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
内容添加完成之后保存退出
- 创建一个配置文件初始化脚本
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
- 创建一个批量启动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
-
创建完成以上的所有基础文件信息之后,接下来就可以执行相关的脚本初始化出来六个基础的容器。执行完成之后使用docker ps命令查看当前的容器状态信息
-
在容器当中创建对应的对应的集群处理。
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);