前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring Boot Redis 数据缓存

Spring Boot Redis 数据缓存

作者头像
用户2146693
发布2019-08-08 11:40:41
7520
发布2019-08-08 11:40:41
举报

前言

之前都是在Spring MVC中使用Redis,这里记录在Spring Boot中使用Redis作为数据缓存的过程。参考Spring Boot集成Spring Data Jpa,搭建项目。

启动Redis

本次是在Docker中部署Redis,从https://hub.docker.com/中直接pull官方的redis镜像,启动redis。

这里写图片描述
这里写图片描述

使用RedisDesktopManager测试一下。。。

这里写图片描述
这里写图片描述

连接成功了。接下来看看Spring Boot中怎么使用Redis。

集成

POM文件

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

Redis配置

application.properties

# REDIS (RedisProperties)
# Redis数据库索引(默认为0)
spring.redis.database=0  
# Redis服务器地址
spring.redis.host=192.168.99.100
# Redis服务器连接端口
spring.redis.port=6379  
# Redis服务器连接密码(默认为空)
spring.redis.password=
# 连接池最大连接数(使用负值表示没有限制)
spring.redis.pool.max-active=8  
# 连接池最大阻塞等待时间(使用负值表示没有限制)
spring.redis.pool.max-wait=-1  
# 连接池中的最大空闲连接
spring.redis.pool.max-idle=8  
# 连接池中的最小空闲连接
spring.redis.pool.min-idle=0  
# 连接超时时间(毫秒)
spring.redis.timeout=0  

RedisCacheConfig类

@Configuration
@EnableCaching
public class RedisCacheConfig extends CachingConfigurerSupport {
    @Bean
    public RedisTemplate<String, String> redisTemplate(RedisConnectionFactory factory) {
        RedisTemplate<String, String> template = new RedisTemplate<>();
        template.setConnectionFactory(factory);
        Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
        ObjectMapper om = new ObjectMapper();
        om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
        om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
        jackson2JsonRedisSerializer.setObjectMapper(om);
        template.setValueSerializer(jackson2JsonRedisSerializer);
        template.afterPropertiesSet();
        return template;
    }

    @SuppressWarnings("rawtypes")
    @Bean
    public CacheManager cacheManager(RedisTemplate redisTemplate) {
        RedisCacheManager rcm = new RedisCacheManager(redisTemplate);
        //设置缓存过期时间,默认是0l
        rcm.setDefaultExpiration(60);//秒
        return rcm;
    }

}

使用

    @RequestMapping(value = "/search", method = RequestMethod.POST)
    @Cacheable(value = "search")
    public ModelMap search() {
        List<User> userList = userService.selectAll();
        LOGGER.info("search....");
        return result(Constant.SUCCESS_CODE, Constant.SUCCESS_MSG, userList);
    }

测试

  1. PostMan发起请求
这里写图片描述
这里写图片描述

2. 后台接受请求

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

3. 返回值

这里写图片描述
这里写图片描述

4. 缓存

使用RedisDesktopManager 查看缓存的结果。

这里写图片描述
这里写图片描述

下次请求,会直接从redis返回结果。不会再请求数据库,接口响应的时间大大缩短。

这里写图片描述
这里写图片描述

参考

Cache Abstraction Caching Data with Spring

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 启动Redis
  • 集成
    • POM文件
      • Redis配置
        • RedisCacheConfig类
        • 使用
        • 测试
        • 参考
        相关产品与服务
        云数据库 Redis
        腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档