十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
本篇文章为大家展示了SpringBoot中怎么利用redis缓存数据,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
成都创新互联公司主要从事成都网站制作、做网站、外贸营销网站建设、网页设计、企业做网站、公司建网站等业务。立足成都服务金湖,十年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18980820575
1.启用对缓存的支持
spring对缓存的支持有两种方式:
a.注解驱动的缓存
b.XML声明的缓存
本文主要介绍纯Java配置的缓存,那么必须在配置类上添加@EnableCaching,这样的话就能启动注解驱动的缓存。
2.使用Redis缓存
缓存的条目不过是一个键值对(Key-Value),其中key描述了产生value的操作和参数,因此会很自然的想到Redis。
Redis可以用来为srping缓存抽象机制缓存条目,Spring-Data-Redis提供了RedisCacheManager,这是CacheManager的一个实现。RedisCacheManager会与Redis服务器协作,通过RedisTemplate将缓存条目储存到Redis中。
为了使用RedisCacheManager,我们需要RedisTmeplate Bean配置以及RedisConnectionFactory实现类(JedisConnectionFactory Bean配置)。
3.配置将缓存条目存储在Redis服务器的缓存管理器。
前提需要在pom.xml引入
在application.properties中配置redis连接相关参数
#配置redis#在RedisProperties.class有redis的默认配置,默认host为localhost,默认端口为6379spring.redis.host=127.0.0.1spring.redis.port=6379
配置缓存管理器
package com.niugang;import java.lang.reflect.Method;import org.springframework.cache.CacheManager;import org.springframework.cache.annotation.EnableCaching;import org.springframework.cache.interceptor.KeyGenerator;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.data.redis.cache.RedisCacheManager;import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;import org.springframework.data.redis.core.RedisTemplate;import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;import org.springframework.data.redis.serializer.StringRedisSerializer;import com.fasterxml.jackson.annotation.PropertyAccessor;import com.fasterxml.jackson.databind.ObjectMapper;import com.fasterxml.jackson.annotation.JsonAutoDetect;@Configuration//没有@EnableCaching这个注解的话,代码不会报错,就是内容不会放入redis中@EnableCaching public class RedisConfig {/*** 緩存管理器,不管用什么的缓存,都必须有缓存管理器*/@Beanpublic CacheManager cacheManager() {RedisCacheManager redisCacheManager = new RedisCacheManager(redisTemplate());/** 设置缓存保留的时间,默认是永久保存*/redisCacheManager.setDefaultExpiration(60);return redisCacheManager;}@Beanpublic JedisConnectionFactory jedisConnectionFactory() {JedisConnectionFactory jedisConnectionFactory = new JedisConnectionFactory();jedisConnectionFactory.afterPropertiesSet();return jedisConnectionFactory;} /*** redis默认对象序列化是通过jdk来序列化的,这里面不用默认序列化方式,用JackJson进行序列化* * 设置key的类型为String类型* * @return*/@Bean@SuppressWarnings({ "rawtypes", "unchecked" })public RedisTemplate
4.为方法添加注解以支持缓存
spring的缓存抽象在很大程度上是围绕切面构建的,在sprng中启用缓存时,会创建一个切面,它触发
一个或更多的spring的缓存注解。
spring提供了四个注解来声明缓存规则
5.填充缓存
@Cacheable和CachePut都可以填充缓存,他们之间还是确有差异的。
@Cacheable和CachePut共同的属性
6.自定义key
@Cacheable和CachePut都有一个名为key的属性,这个属性能够替代默认的key,t它是通过SpEl(Spring El表达式)表达式计算得到的。具体到我们的业务场景 save(User user),我们需要将key设置保存为User对象中的id,我们通过MySQL数据库自动生成id,此时参数中的User对象还没有id.幸好有SpEl。
7.在UserService中添加如下方法。
/*** 查询全部* * @Cacheable,先在缓存中找,有则直接返回,不去调用方法,没有则调用方法,将结果放入缓存中* * * 默认的key是基于方法参数来确定的,queryList()这个方法没有参数,所以需要生成key的策略*///@Cacheable(value="findAll",keyGenerator="wiselyKeyGenerator")public List
上述内容就是SpringBoot中怎么利用Redis缓存数据,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注创新互联行业资讯频道。