mybatis plus开启二级缓存

开启二级缓存

mybatis 默认开启一级缓存,同一个sqlsession中相同的操作只会从磁盘上获取一次
作用范围:同一个sqlsession

mybatis plus开启二级缓存只需要两步

1、启动类:@EnableCaching //允许二级缓存
2、需要缓存的service层上面加上注解 如:@Cacheable(value = “SeatPerson”, key = “#areaNo”)
注:key为传入的值,相当于map中的key当下次请求时发现该key存在,不会再去数据库层进行sql查询,直接从缓存中取;
value用于缓存值的对象,当你更换对象后之前缓存对象中的值不能继续拿到,会重新执行sql,存储给新的value对象

mybatis plus开启二级缓存_第1张图片

service层可用注解如下:
①Cacheable:根据方法的请求参数对其结果进行缓存,多用于查询
​ ②CachePut:执行方法,并缓存结果
​ ③CacheEvict:清空缓存
​ ④Caching:能够同时应用多个缓存注解功能
​ ⑤CacheConfig:用于抽取缓存的公共配置(类级别)

作用范围:namespace (二级缓存是用来解决一级缓存不能跨会话共享的问题的,范围是namespace 级别的,可以被多个SqlSession 共享(只要是同一个接口里面的相同方法,都可以共享))

优先级:二级缓存》一级缓存》查询数据库
(此配置为spring boot+mybatis plus配置,因为springboot的自动装配很大方面借鉴了spi机制,所以配置很方便) spring boot中的 spi机制

缓存解决了那些问题:

1.存在内存中的临时数据
2.将用户经常查询的数据放在缓存(内存)中,用户去查询数据就不用从磁盘上(关系型数据库
数据文件)查询,从缓存中查询,从而提高查询效率,解决了高并发系统的性能问题。
3、减少和数据库的交互次数,减少系统开销,提高系统效率。

什么样的条件需要使用缓存?

经常查询并且不经常改变的数据。

配置缓存时间

@Slf4j
@Configuration
@EnableCaching //启用二级缓存
public class MybatisConfig {

    @Bean
    public RedisCacheManager cacheManager(RedisConnectionFactory factory) {
        RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig();

        Set<String> cacheNames = new HashSet<>();
        cacheNames.add("seatPerson");

        ConcurrentHashMap<String, RedisCacheConfiguration> configMap = new ConcurrentHashMap<>();
        //配置 seatPerson 6秒过期时间
        configMap.put("seatPerson", config.entryTtl(Duration.ofSeconds(6L)));
        //distributor 的有效期是永久的
        configMap.put("distributor", config);
        //需要先初始化缓存名称,再初始化其它的配置。
        return RedisCacheManager.builder(factory).initialCacheNames(cacheNames).withInitialCacheConfigurations(configMap).build();
    }
} 

你可能感兴趣的:(数据库,mybatis)