SpringBoot整合Redis缓存的方式

一个Java小白的学习之路 个人博客 youngljx.top

SpringBoot整合Redis缓存

前提:认识redis

Redis 是一个开源(BSD 许可)、内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。它支持字符串(String)、哈希表(Hash)、列表(List)、集合(Set)、有序集合(Zset)等数据类型。内置复制、Lua 脚本、LRU 收回、事务以及不同级别磁盘持久化功能,同时通过 Redis Sentinel 提供高可用,通过 Redis Cluster 提供自动分区。

Redis知识点详解
了解 Redis 并在 Spring Boot 项目中使用 Redis

Linux CentOS服务器安装和配置redis

安装在线安装或者下载解压或者直接使用宝塔面板安装(路径和前两种不同)

配置redis参数:

daemonize 改为yes 表示允许redis在后台启动
#bind 注释掉bind参数 表示可以外网来连接redis 远程访问
requirespass your password 设置登录redis时的密码
protected-mode no 关闭保护模式

配置CentOS 关闭防火墙 远程连接redis

1:查看防火墙状态
systemctl status firewalld
或    
service  iptables status

3:永久关闭防火墙
systemctl disable firewalld
或    
chkconfig iptables off

启动redis,定位到redis安装目录下

 前台启动:  ./redis-server
 后台启动: 修改daemonize参数
  运行redis的时候,指定加载的配置文件redis.conf(将redis.conf复制到redis的安装目录)
  ./redis-server  redis.conf

登录redis

 redis-cli -a  your password

关闭redis, 控制台输入 shutdown 再使用exit退出或者直接命令

redis-cli -p 6379 -a your password shutdown

本地使用可视化工具 Redis Desktop Manager输入ip地址和密码 远程连接redis

在这里插入图片描述

整合方案一:Spring Data Redis

引入redis依赖

<!-- redis依赖包 ->
<!--Spring Boot 2.x以后底层不再使用 Jedis,而是换成了 Lettuce-->
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!--用作 Redis 对象连接池->
<dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-pool2</artifactId>
 </dependency>

参数配置
具体参数配置参考:org.springframework.boot.autoconfigure.data.redis.RedisProperties

#redis配置
#Redis服务器地址
spring.redis.host= Linux服务器IP地址
#Redis服务器连接端口
spring.redis.port=6379
#redis连接密码
spring.redis.password= your password 
#Redis数据库索引(默认为0)
spring.redis.database=0  

spring.redis.lettuce.pool.max-active=8
#连接池最大阻塞等待时间(使用负值表示没有限制)
spring.redis.lettuce.pool.max-wait=-1ms
#连接池中的最大空闲连接
spring.redis.lettuce.pool.max-idle=8
#连接池中的最小空闲连接
spring.redis.lettuce.pool.min-idle=0
#连接超时时间(毫秒)
spring.redis.lettuce.shutdown-timeout=100ms

Spring Boot 中 Redis 的自动化配置类中默认配置
RedisTemplate<Object,Object> 和StringRedisTemplate,源码如下:
如果开发者没有提供相关的 Bean ,这两个配置就会生效可以直接注入,否则不会生效。

@Configuration(
    proxyBeanMethods = false
)
@ConditionalOnClass({
   RedisOperations.class})
@EnableConfigurationProperties({
   RedisProperties.class})
@Import({
   LettuceConnectionConfiguration.class, JedisConnectionConfiguration.class})
public class RedisAutoConfiguration {
   
    public RedisAutoConfiguration() {
   
    }

    @Bean
    @ConditionalOnMissingBean(
        name = {
   "redisTemplate"}
    )
    public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) throws UnknownHostException {
   
        RedisTemplate<Object, Object> template = new RedisTemplate();
        template.setConnectionFactory(redisConnectionFactory);
        return template;
    }

    @Bean
    @ConditionalOnMissingBean
    public StringRedisTemplate stringRedisTemplate(RedisConnectionFactory redisConnectionFactory) throws UnknownHostException {
   
        StringRedisTemplate template = new StringRedisTemplate();
        template.setConnectionFactory(redisConnectionFactory);
        return template;
    }
}

StringRedisTemplate就相当于RedisTemplate<String, String>的实现。源码如下

public class StringRedisTemplate extends RedisTemplate<String, String> {
   
    public StringRedisTemplate() {
   
        this.setKeySerializer(RedisSerializer.string());
        this.setValueSerializer(RedisSerializer.string());
        this.setHashKeySerializer(RedisSerializer.string());
        this.setHashValueSerializer(RedisSerializer.string());
    }

    public StringRedisTemplate(RedisConnectionFactory connectionFactory) {
   
        this();
        this.setConnectionFactory(connectionFactory);
        this.afterPropertiesSet();
    }

    protected RedisConnection preProcessConnection(RedisConnection connection, boolean existingConnection) {
   
        return new DefaultStringRedisConnection(connection);
    }
RedisConfig 自定义序列化的RedisTemplate模板配置

按照自动配置类RedisTemplate修改即可
自定义序列化笔记:RedisTemplate的序列化器

/**
 * @description: 自定义序列化的RedisTemplate配置
 */
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot提供了很方便的方式整合Redis缓存。下面是使用Spring Boot整合Redis缓存的步骤: 1. 添加Redis依赖:在你的`pom.xml`文件中添加Redis依赖。可以使用下面的依赖: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> ``` 2. 配置Redis连接信息:在`application.properties`(或`application.yml`)文件中配置Redis连接信息,包括主机、端口、密码等。示例配置如下: ```properties spring.redis.host=your_redis_host spring.redis.port=your_redis_port spring.redis.password=your_redis_password ``` 3. 创建缓存配置类:创建一个Java类,用于配置Redis缓存。可以使用`@EnableCaching`注解开启缓存功能,以及使用`@Configuration`注解将该类声明为配置类。示例代码如下: ```java @Configuration @EnableCaching public class RedisCacheConfig { @Bean public RedisCacheConfiguration cacheConfiguration() { return RedisCacheConfiguration.defaultCacheConfig() .disableCachingNullValues(); } @Bean public RedisCacheManager cacheManager(RedisConnectionFactory redisConnectionFactory) { RedisCacheManager.RedisCacheManagerBuilder builder = RedisCacheManager.RedisCacheManagerBuilder .fromConnectionFactory(redisConnectionFactory); return builder.build(); } } ``` 4. 使用缓存注解:在你的Service层的方法上使用Spring的缓存注解来启用缓存功能。例如,可以使用`@Cacheable`注解来缓存方法的返回结果。示例代码如下: ```java @Service public class UserService { @Autowired private UserRepository userRepository; @Cacheable("users") public User getUserById(Long id) { return userRepository.findById(id).orElse(null); } } ``` 这是一种简单的方式来使用Spring Boot整合Redis缓存。你可以根据自己的需求进一步配置和使用Redis缓存功能。希望能对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值