SpringCache
作者:互联网
<!--导入springCache依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</artifactId> </dependency>
spring.cache.type=redis
并在启动类上添加注解
//springCache缓存开启
@EnableCaching
@cacheable 触发缓存的操作 缓存中有数据 就直接返回 没有数据 查询出数据 放进缓存 @cacheEvict 触发把数据从缓存中删除的操作 @cachePut 不影响方法执行的情况下 更新缓存 @chching 以上操作的组合操作 @cacheconfig 在类级别共享缓存的相关数据
/** * 查询出所有的商品大类 * @return * 在注解中我们可以指定缓存的名称 起到一个分区的作用 一般按照业务区分 * @Cacheable({"category","product"}) * 代表当前的方法返回结果是需要缓存的 调用该方法的时候 如果缓存中有数据 那么该方法就不会执行 * 如果缓存中没有数据 那么就执行该方法 并且把查询的结果缓存起来 * * 缓存处理 * 1存储在redis中的缓存数据的key是默认生成的 缓存名称::simpleKey * 2默认缓存的数据的过期时间是永久 -1 * 3 缓存的数据 默认使用jdk的序列号机制 * * 改进 * 1 生成的缓存数据 我们需要自定义的key 自定义key在双引号中写spel表达式 但是如果定义字符串 需要在加上单引号 * 2 指定缓存数据的存活时间 spring cache time-to-live: 60000 * 3 把缓存的数据保存为json数据 * */ @Cacheable(key = "#root.method.name",value = {"catagory","product"}) @Override public List<CategoryEntity> getLeve1Categroy() { //long start=System.currentTimeMillis(); System.out.println("查询了数据库操作....."); List<CategoryEntity> list=baseMapper.queryLeve1Category(); //System.out.println("查询queryLeve1Category所需要的时间为:"+(System.currentTimeMillis()-start)); return list; }
自定义序列化
@Configuration
public class MyCacheConfig {
@Bean
public RedisCacheConfiguration redisCacheConfiguration(){
RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig();
//指定自定义序列化的方式
config=config.serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(new StringRedisSerializer()));
config=config.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(new GenericFastJsonRedisSerializer()));
return config;
}
}
添加以下完整配置类
@Configuration public class MyCacheConfig { @Bean public RedisCacheConfiguration redisCacheConfiguration(CacheProperties cacheProperties){ RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig(); //指定自定义序列化的方式 config=config.serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(new StringRedisSerializer())); config=config.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(new GenericFastJsonRedisSerializer())); CacheProperties.Redis redisProperties = cacheProperties.getRedis(); if (redisProperties.getTimeToLive() != null) { config = config.entryTtl(redisProperties.getTimeToLive()); } if (redisProperties.getKeyPrefix() != null) { config = config.prefixKeysWith(redisProperties.getKeyPrefix()); } if (!redisProperties.isCacheNullValues()) { config = config.disableCachingNullValues(); } if (!redisProperties.isUseKeyPrefix()) { config = config.disableKeyPrefix(); } return config; } }
标签:缓存,SpringCache,自定义,数据,redisProperties,RedisCacheConfiguration,config 来源: https://www.cnblogs.com/Lcch/p/16339348.html