springboot整合redis缓存

251 阅读2分钟

springboot缓存管理

常用注解属性

Chahe缓存支持的SpEL表达式

常用注解

@EnableCaching

@EnableCaching注解用于开启基于注解的缓存支持。该注解需要配置在上(在Spring Boot中,通常配置在项目启动类或配置类上)

@Cacheable

@Cacheable注解用于对方法结果进行缓存存储,可以作用于类或方法(通常用在数据查询方法上)

执行顺序:先进行缓存查询,若已有缓存的数据则直接使用缓存数据,否则进行方法查询,并将结果进行缓存

必须声明value的值

@CachePut

@CachePut注解作用是更新缓存数据,可以作用于类或方法(通常用在数据更新方法上)

执行顺序:先进行方法调用,然后将方法结果更新到缓存中。

@CacheEvict

@CacheEvict注解作用是删除缓存数据,可以作用于类或方法(通常用在数据删除方法上)

执行顺序:先进行方法调用,然后将缓存进行清除。

@CacheEvict注解也提供了多个属性,这些属性与@Cacheable注解的属性基本相同除此之外,还额外提供了两个特殊属性allEntries和beforelnvocation.

@Caching

@Caching注解用于针对复杂规则的数据缓存管理,可以作用于类或方法。

在@Caching注解内部包含有cacheable、put和evict三个属性,分别对应于@Cacheable@CachePut和@CacheEvict三个注解

@CacheConfig

@CacheConfig注解使用在类上,主要用于统筹管理类中所有使用@Cacheable、@CachePut和@CacheEvict注解标注方法中的公共属性,这些公共属性包括有cacheNameskeyGeneratorcacheManagercacheResolver

redis缓存

导入依赖

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

不需编写对应版本号信息,其版本号信息由Spring Boot统一管理

redis中间件连接配置

Redis配置类

package com.librarymanagement.config;
import org.springframework.boot.autoconfigure.cache.CacheProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.cache.RedisCacheConfiguration;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.RedisSerializationContext;
import org.springframework.data.redis.serializer.StringRedisSerializer;
@Configuration
 public class RedisConfig {
 @Bean
 RedisCacheConfiguration redisCacheConfiguration(CacheProperties cacheProperties) {
 RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig();
 config = config.serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(new StringRedisSerializer()));
 config = config.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(new GenericJackson2JsonRedisSerializer()));
 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;
 }
 }