首页 > 数据库 >springboot整合redis的哨兵模式

springboot整合redis的哨兵模式

时间:2024-02-05 21:32:33浏览次数:27  
标签:springboot redis Redis springframework 哨兵 import org RedisTemplate

在Spring Boot中整合Redis的哨兵模式涉及到配置Spring Boot应用程序以连接到Redis哨兵集群。哨兵模式是Redis的一种高可用解决方案,它提供了自动故障转移功能,可以在Redis主节点发生故障时自动将一个从节点升级为新的主节点。

步骤 1:安装并配置Redis哨兵集群

首先,您需要在您的服务器上安装并配置Redis哨兵集群。这通常涉及到以下步骤:

  1. 安装Redis。
  2. 配置Redis主从复制。
  3. 配置Redis哨兵。 具体配置步骤请参考Redis官方文档或相关教程。

步骤 2:在Spring Boot项目中添加依赖

在您的Spring Boot项目的pom.xml文件中添加Spring Data Redis依赖和Jedis客户端依赖。

<dependencies>
    <!-- Spring Data Redis -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-redis</artifactId>
    </dependency>
    <!-- Jedis客户端 -->
    <dependency>
        <groupId>redis.clients</groupId>
        <artifactId>jedis</artifactId>
    </dependency>
</dependencies>

步骤 3:配置application.properties或application.yml

在您的Spring Boot项目的application.propertiesapplication.yml文件中配置Redis哨兵模式的连接信息。

# application.properties
spring.redis.sentinel.master=mymaster
spring.redis.sentinel.nodes=192.168.1.100:26379,192.168.1.101:26379,192.168.1.102:26379

或者

# application.yml
spring:
  redis:
    sentinel:
      master: mymaster
      nodes:
        - 192.168.1.100:26379
        - 192.168.1.101:26379
        - 192.168.1.102:26379

在这里,mymaster是哨兵集群监控的主节点名称,nodes是哨兵节点的列表,格式为host:port

步骤 4:配置Redis连接工厂

在Spring Boot项目中创建一个配置类,配置Redis连接工厂。

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.RedisSentinelConfiguration;
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.StringRedisSerializer;
@Configuration
public class RedisConfig {
    @Bean
    public RedisConnectionFactory redisConnectionFactory() {
        RedisSentinelConfiguration sentinelConfig = new RedisSentinelConfiguration()
                .master("mymaster")
                .sentinel("192.168.1.100", 26379)
                .sentinel("192.168.1.101", 26379)
                .sentinel("192.168.1.102", 26379);
        return new JedisConnectionFactory(sentinelConfig);
    }
    @Bean
    public RedisTemplate<String, Object> redisTemplate() {
        RedisTemplate<String, Object> template = new RedisTemplate<>();
        template.setConnectionFactory(redisConnectionFactory());
        template.setKeySerializer(new StringRedisSerializer());
        return template;
    }
}

步骤 5:使用RedisTemplate操作Redis

现在,您可以在Spring Boot应用程序中注入RedisTemplate来操作Redis。

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
@Service
public class RedisService {
    @Autowired
    private RedisTemplate<String, Object> redisTemplate;
    public void setKey(String key, Object value) {
        redisTemplate.opsForValue().set(key, value);
    }
    public Object getKey(String key) {
        return redisTemplate.opsForValue().get(key);
    }
}

实际案例

假设我们正在开发一个简单的博客系统,我们想要使用Redis来缓存热门文章的数据。

  1. 我们首先在Redis哨兵集群中配置好主从复制和哨兵模式。
  2. 在Spring Boot项目中添加Spring Data Redis和Jedis依赖。
  3. 配置application.yml文件,连接到Redis哨兵集群。
  4. 创建一个配置类RedisConfig,配置Redis连接工厂和RedisTemplate
  5. 在我们的博客服务中,我们注入RedisTemplate,并使用它来缓存热门文章的数据。
@Service
public class BlogService {
    @Autowired
    private RedisTemplate<String, Object> redisTemplate;
    public void cachePopularPosts(List<Post> posts) {
        for (Post post : posts) {
            redisTemplate.opsForValue().set("popular:post:" + post.getId

标签:springboot,redis,Redis,springframework,哨兵,import,org,RedisTemplate
From: https://blog.51cto.com/u_16489298/9613283

相关文章

  • Springboot在编写CRUD时,访问对应数据函数返回null
    1.我遇到了什么问题我在学习springboot,其中在编写CRUD时发现访问数据的函数执行下去返回值是null但是其它部分正常。下面是我的错误代码pojopublicclassBot{@TableId(type=IdType.AUTO)privateIntegerid;privateIntegeruser_id;privateStr......
  • redis操作技巧
    1.sadd和srem的使用(Set)redisAdapter.sadd(key1,value1);jedisAdapter.srem(key1,value1);2.hmsetStr和hgetAll和hgetStr的使用 publicvoidsaveToRedis(Stringkey,MapfieldValue){if(!CollectionUtils.isEmpty(fieldValue)){jedisAdapter.hmsetStr(key,fiel......
  • Springboot整合redis配置详解
    Springboot整合redis配置详解1.导入依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId></dependency>2.编写properties或者yml配置#Redis本地服务器地址,注意要开启redis服务,即那个redis-s......
  • redis安装及常用配置
    目录一、引言1.1数据库压力过大1.2数据不同步1.3传统锁失效二、Redis介绍2.1NoSQL2.2NoSQL的类别2.2.1键值(Key-Value)存储数据库2.2.2列存储数据库2.2.3文档型数据库2.2.4图形(Graph)数据库2.3Redis是什么2.4Redis的应用场景2.5Redis优缺点2.5.1Redis优势2.5.2Redi......
  • SpringBoot可以同时处理多少请求?
    正文我们都知道,SpringBoot默认的内嵌容器是Tomcat,也就是我们的程序实际上是运行在Tomcat里的。所以与其说SpringBoot可以处理多少请求,到不如说Tomcat可以处理多少请求。关于Tomcat的默认配置,都在spring-configuration-metadata.json文件中,对应的配置类则是org.springframework.b......
  • 项目中redis通用配置config
    packagecom.gm.wj.config;importcom.fasterxml.jackson.annotation.JsonAutoDetect;importcom.fasterxml.jackson.annotation.PropertyAccessor;importcom.fasterxml.jackson.databind.ObjectMapper;importorg.springframework.cache.annotation.CachingConfigurerS......
  • spring-boot-maven-plugin maven-compiler-plugin springboot demo
     <build><finalName>${project.artifactId}</finalName><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-......
  • springboot之ImportBeanDefinitionRegistrar动态注入
    SpringBoot中的使用在SpringBoot内置容器的相关自动配置中有一个ServletWebServerFactoryAutoConfiguration类。该类的部分代码如下:@Configuration(proxyBeanMethods=false)@AutoConfigureOrder(Ordered.HIGHEST_PRECEDENCE)@ConditionalOnClass(ServletRequest.class)@Con......
  • 为什么 Redis Cluster 是 16384 个槽位
    目录Redis集群CRC16的算法原理CRC16算法最大值心跳master节点间心跳通讯Redis集群RedisCluster采用数据分片机制,定义了16384个Slot槽位,集群中的每个Redis实例负责维护一部分槽以及槽所映射的键值数据。客户端可以连接集群中任意一个Redis实例,发送读写命令,如果当......
  • SpringBoot- 文件上传
    packagecom.example.demo.controller;importorg.springframework.web.bind.annotation.PostMapping;importorg.springframework.web.bind.annotation.RestController;importorg.springframework.web.multipart.MultipartFile;importjavax.servlet.http.HttpServlet......