Spring Boot Redis 集群
导言
Redis 是一个开源的内存数据结构存储系统,常用于缓存、消息队列和分布式锁等场景。Spring Boot 是一个用于创建独立的、生产级别的 Spring 应用程序的框架。
在大规模应用中,单个 Redis 实例可能无法满足业务需求,因此需要使用 Redis 集群来提供高可用性和扩展性。本文将介绍如何使用 Spring Boot 搭建 Redis 集群,并提供代码示例。
准备工作
为了搭建 Redis 集群,我们首先需要安装和配置多个 Redis 节点。在本文中,我们将使用 Docker 来快速创建 Redis 节点。请确保已经安装了 Docker,并按照以下步骤创建 3 个 Redis 节点:
-
创建一个名为
redis-cluster
的目录,用于存放 Redis 配置文件和数据。 -
在
redis-cluster
目录下创建 3 个子目录redis1
、redis2
和redis3
。 -
在
redis-cluster
目录下创建一个名为redis.conf
的文件,用来配置 Redis 集群的参数。以下是一个简单的配置示例:
port 6379
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
- 启动 3 个 Redis 容器,并将配置文件和数据目录挂载到容器内部。使用以下命令分别启动 3 个 Redis 实例:
docker run -d --name redis1 -v $PWD/redis1:/data -v $PWD/redis.conf:/usr/local/etc/redis/redis.conf -p 6379:6379 redis redis-server /usr/local/etc/redis/redis.conf
docker run -d --name redis2 -v $PWD/redis2:/data -v $PWD/redis.conf:/usr/local/etc/redis/redis.conf -p 6380:6379 redis redis-server /usr/local/etc/redis/redis.conf
docker run -d --name redis3 -v $PWD/redis3:/data -v $PWD/redis.conf:/usr/local/etc/redis/redis.conf -p 6381:6379 redis redis-server /usr/local/etc/redis/redis.conf
现在我们已经成功创建了一个包含 3 个 Redis 节点的集群。
创建 Spring Boot 项目
在开始编写代码之前,我们需要先创建一个 Spring Boot 项目。可以使用 Spring Initializr 创建一个空的 Spring Boot 项目,添加以下依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
完成创建后,我们可以开始编写代码。
连接 Redis 集群
首先,我们需要配置 Spring Boot 项目连接到 Redis 集群。在 application.properties
文件中添加以下配置:
spring.redis.cluster.nodes=127.0.0.1:6379,127.0.0.1:6380,127.0.0.1:6381
这里我们将 Redis 集群的节点配置为本地的 3 个节点。
接下来,我们需要创建一个 RedisTemplate bean 来操作 Redis 集群。在 RedisConfig
类中添加以下代码:
@Configuration
public class RedisConfig {
@Value("${spring.redis.cluster.nodes}")
private String clusterNodes;
@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory connectionFactory) {
RedisTemplate<String, Object> template = new RedisTemplate<>();
template.setConnectionFactory(connectionFactory);
return template;
}
@Bean
public RedisConnectionFactory redisConnectionFactory() {
RedisClusterConfiguration configuration = new RedisClusterConfiguration(Arrays.asList(clusterNodes.split(",")));
return new JedisConnectionFactory(configuration);
}
}
在上述代码中,我们使用了 RedisClusterConfiguration
类来配置 Redis 集群的节点。然后,我们使用 JedisConnectionFactory
类来创建 RedisConnectionFactory
。
使用 Redis 集群
现在我们已经成功连接到 Redis 集群,可以开始使用 Redis 进行操作了。以下是一些常用的 Redis 操作示例:
设置和获取值
redisTemplate.opsForValue().set("key", "value");
String value = (String) redisTemplate.opsForValue().