0


Spring Boot 整合 Redis 超详细教程

目录


前言

Redis 是一种高性能的键值存储数据库,而 Spring Boot 是一个简化了开发过程的 Java 框架。将两者结合,可以轻松地在 Spring Boot 项目中使用 Redis 来实现数据缓存、会话管理和分布式锁等功能。

话不多说直接干货!!!


一、pom.xml 中添加 Redis 依赖

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

二、配置 Redis 连接信息

在 application.yml 配置文件中添加 Redis 连接信息,根据自己 Redis 服务器配置,修改主机和端口信息

spring:redis:# 地址host: localhost
       # 端口,默认为6379port:6379# 数据库索引database:0# 密码password:

三.使用 RedisTemplate 进行操作

1、RedisTemplate Bean配置类

@ConfigurationpublicclassRedisConfiguration{/**
     JSON 序列化器来对值进行序列化和反序列化
    */@BeanpublicRedisTemplate<String,Object>redisTemplate(RedisConnectionFactory cf){RedisTemplate<String,Object> rt=newRedisTemplate<>();
      rt.setConnectionFactory(cf);
      rt.setKeySerializer(newStringRedisSerializer());
      rt.setValueSerializer(newGenericJackson2JsonRedisSerializer());return rt;}}

2、注入 RedisTemplate

/**
    在服务类或控制器中注入 RedisTemplate
    */@AutowiredprivateRedisTemplate<String,Object> redisTemplate;

3、 Redis 操作

//使用注入的 RedisTemplate 来进行 Redis 操作,设置键值对、获取值/** 
    设置键值对
    */
    redisTemplate.opsForValue().set("key","value");/**  
    获取值
    */String value =(String) redisTemplate.opsForValue().get("key");

四. Spring Cache 简化缓存操作

1、pom.xml中添加 Spring Cache 依赖

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

2、启用类添加缓存支持注解

//开启spring cache@EnableCaching@SpringBootApplicationpublicclassApplication{// ...}

3、使用缓存注解

@Servicepublicclass redisService {@Cacheable(value ="cacheName", key ="#code")publicObjectgetData(String id){// 从数据库或其他数据源获取数据return data;}@CachePut(value ="cacheName", key ="#code")publicObjectupdateData(String id,Object newData){// 更新数据库或其他数据源的数据return newData;}@CacheEvict(value ="cacheName", key ="#code")publicvoiddeleteData(String id){// 删除数据库或其他数据源的数据}}

五. 实现分布式锁 Redisson

1、pom.xml中添加 Redisson 依赖

<dependency><groupId>org.redisson</groupId><artifactId>redisson-spring-boot-starter</artifactId><version>3.16.3</version></dependency>

2、yml中进行Redisson配置

spring:redis:# 地址redisson:config: classpath:redisson-single.yml #在 redisson-single.yml 配置文件中配置 Redisson 的连接信息

3、Redisson 获取锁

@AutowiredprivateRedissonClient redissonClient;publicvoiddoSomething(){RLock lock = redissonClient.getLock("lockName");try{
        lock.lock();// 执行需要加锁的操作}finally{
        lock.unlock();}}

六. Redis相关配置

1、redis.conf连接池配置

打开 Redis 配置文件 redis.conf

# 最大连接数
maxclients 10000
# TCP 连接的队列长度
tcp-backlog 500
# 连接池中的最大空闲连接数
maxidle 100
# 连接池中的最小空闲连接数
minidle 10
# 连接超时时间(毫秒)
timeout 3000
# 是否开启 TCP 连接的保活机制
tcp-keepalive 0

2、客户端Jedis连接池配置对象

JedisPoolConfig

配置

@ConfigurationpublicclassJedisConfig{@BeanpublicJedisPoolConfigjedisPoolConfig(){JedisPoolConfig poolConfig =newJedisPoolConfig();
       poolConfig.setMaxTotal(10000);
       poolConfig.setMaxIdle(100);
       poolConfig.setMinIdle(10);
       poolConfig.setMaxWaitMillis(3000);// 其他配置项设置return poolConfig;}@BeanpublicJedisConnectionFactoryjedisConnectionFactory(JedisPoolConfig poolConfig){RedisStandaloneConfiguration config =newRedisStandaloneConfiguration();
       config.setHostName("127.0.0.1");
       config.setPort(6379);// 其他 Redis 配置项设置JedisClientConfiguration clientConfig =JedisClientConfiguration.builder().usePooling().poolConfig(poolConfig).build();returnnewJedisConnectionFactory(config, clientConfig);}@BeanpublicRedisTemplate<String,Object>redisTemplate(JedisConnectionFactory connectionFactory){RedisTemplate<String,Object> template =newRedisTemplate<>();
       template.setConnectionFactory(connectionFactory);
       template.setKeySerializer(newStringRedisSerializer());
       template.setValueSerializer(newGenericJackson2JsonRedisSerializer());return template;}}

3、超时时间设置

1、在 Redis 配置文件中设置

timeout

参数,用于控制 Redis 操作的超时时间,以防止长时间的阻塞或无响应操作

timeout 5000//单位为毫秒

2、通过 JedisClientConfiguration 进行配置,将读取操作的超时时间设置为 5秒

@BeanpublicJedisClientConfigurationjedisClientConfiguration(){Duration timeout =Duration.ofSeconds(5);returnJedisClientConfiguration.builder().readTimeout(timeout).build();}@BeanpublicJedisConnectionFactoryjedisConnectionFactory(JedisClientConfiguration clientConfig){// 其他配置项设置returnnewJedisConnectionFactory(config, clientConfig);}
标签: java redis springboot

本文转载自: https://blog.csdn.net/weixin_44966143/article/details/136336414
版权归原作者 Biu te for 所有, 如有侵权,请联系我们删除。

“Spring Boot 整合 Redis 超详细教程”的评论:

还没有评论