其他分享
首页 > 其他分享> > SpringCache的简单应用

SpringCache的简单应用

作者:互联网

常用注解

1.简单整合

1. Maven坐标

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

		<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>io.lettuce</groupId>
                    <artifactId>lettuce-core</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

2.配置

在 application.properties 配置文件中指定缓存类型为 Redis
在这里插入图片描述

在启动类上添加注解 @EnableCaching
在这里插入图片描述

3. 测试

在这里插入图片描述
在这里插入图片描述

2. 自定义整合

2.1 自定义生成的key

在注解的 key 属性中进行配置,且接受 SpEL 语法

 @Cacheable(value = {"testCache"},key = "#root.method.name") //#root.method.name表示使用当前方法名作为key

2.2 自定义缓存的数据的存活时间

在 application.properties 配置文件中进行配置
在这里插入图片描述

2.3 自定义保存数据的格式(默认是java的序列化数据)

大致原理:

Created with Raphaël 2.2.0 CacheAutoConfiguration RedisCacheConfiguration 自动配置了RedisCacheManager 初始化所有的缓存 每个缓存确定使用什么配置 如果redisCacheConfiguration有就用已有的,没有则用默认配置 更改缓存的配置属性,只需给容器注入RedisCacheConfiguration 注入自定义的RedisCacheConfiguration后,就会应用到当前RedisCacheManager管理的所有缓存分区中

自定义缓存配置类

package com.atguigu.gulimall.product.config;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.cache.CacheProperties;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.cache.annotation.EnableCaching;
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;

import java.time.Duration;

/**
 * 描述:
 * 缓存配置
 *
 * @author XueGuCheng
 * @create 2021-01-21 19:10
 */
@EnableConfigurationProperties(CacheProperties.class)//对配置文件的配置进行属性绑定
@Configuration
@EnableCaching//不需要在启动类在表明该注解
public class MyCacheConfig {

    @Autowired
    CacheProperties cacheProperties;

    @Bean
    RedisCacheConfiguration redisCacheConfiguration(){
        RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig();
        //指定数据过期时间
//        config = config.entryTtl(Duration.ofDays());
        //指定key的缓存格式
        config = config.serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(new StringRedisSerializer()));
        //指定value的缓存格式为JSON
        config = config.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(new GenericJackson2JsonRedisSerializer()));

        //使 application.properties 配置文件的配置生效
        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;
    }




}

3. 常见配置属性

在这里插入图片描述

总结

SpringCache在并发读模式下的问题:

SpringCache在并发写模式下的问题:
SpringCache对并发写模式下的问题的解决方案的支持度不高

总而言之:SpringCache适合常规数据(读多写小,即时性,一致性要求不高的数据)

标签:缓存,SpringCache,import,redisProperties,springframework,应用,简单,org,config
来源: https://blog.csdn.net/xueguchen/article/details/112968873