美文网首页
SpringBoot 06 ~ Cache

SpringBoot 06 ~ Cache

作者: 帅可儿妞 | 来源:发表于2018-11-07 22:55 被阅读9次

    缓存对于高并发是必不可少的部分,如果你的项目的并发量非常大,而缓存这部分又非常弱,配置好缓存能使你的项目性能有一个质的飞跃。今天就来看看SpringBoot中的缓存吧

    一、SpringBoot缓存简介

    1. JCache
      • JCache是Java Caching的简写,有JCP发布的一套Java缓存规范,它提供了一组通用接口和类,可用于将Java对象临时存储在内存中;但不是所有的缓存框架都实现了这组接口,但是我们常用的Redis,EhCache都是实现了的,如果没有实现,那么就需要自己动手,过程相对来说还是比较麻烦的。
      • JCache的主要组件:
        • CachingProvider:定义了创建、配置、获取、管理和控制多个CacheManager。一个应用可以在运行期访问多个CachingProvider;
        • CacheManager:定义了创建、配置、获取、管理和控制多个唯一命名的Cache,这些Cache存在于CacheManager的上下文中。一个CacheManager仅被一个CachingProvider所拥有;
        • Cache:是一个类似Map的数据结构并临时存储以Key为索引的值。一个Cache仅被一个CacheManager所拥有;
        • Entry:是一个存储在Cache中的key-value对;
        • Expiry:每一个存储在Cache中的条目有一个定义的有效期。一旦超过这个时间,条目为过期的状态。一旦过期,条目将不可访问、更新和删除。缓存有效期可以通过ExpiryPolicy设置;
          JCache的主要组件关系
      • JCache小示例:
        CachingProvider cachingProvider = Caching. getCachingProvider(); 
        CacheManager cacheManager = cachingProvider. getCacheManager(); 
        MutableConfiguration<String, String> config = new MutableConfiguration(); 
        Cache<String, String> cache = cacheManager. createCache("CacheName",config); 
        cache.put("key","value"); 
        String value = cache.get("key");
        
    2. Spring缓存接口
      • 因为JSR107的JCache的难度相对来说比较大,Spring在3.1版本的时候发布了两个接口来简化缓存的开发,并且支持JCache的注解;这个两个接口就是:
        • org.springframework.cache.Cache:缓存接口,定义缓存操作。实现有:RedisCache、EhCacheCache、ConcurrentMapCache等;
        • org.springframework.cache.CacheManager:缓存管理器,管理各种缓存(Cache)组件;
      • Spring缓存接口注解。为了使得缓存开发简便易用,Spring定义了一些注解:
        • @EnableCaching:开启缓存的注解功能;参数:①cacheNames/value:指定缓存组件(CacheManager)的名字,将方法的返回结果放在哪个缓存中,是数组的方式,可以指定多个缓存;②key:缓存数据使用的key;可以用它来指定。默认是使用方法参数的值。如果手动指定的话:@EnableCaching(value="<mgr-name>",key="#<parameter-name>"),即可以编写SpEL表达式,详见官网或下图;③keyGenerator:key的生成器;可以自己指定key的生成器的组件id, key/keyGenerator:二选一使用;④condition:指定符合条件的情况下才缓存,同样可以使用SpEL表达式,参数unless与其意义相反;
          Cache SpEL available metadata
        • @Cacheable:标记在查询的方法上,方法的返回值就是缓存的目标,能够根据方法的请求参数对其结果进行缓存;使用keyGenerator来生成缓存数据时key生成策略,serialize来指定缓存数据时value序列化策略;
        • @CachePut:更新缓存,标记在更新数据库数据的方法上,书库更新完成后就会更新缓存中的数据;
        • @CacheEvict:标记在删除的方法上,能根据参数将缓存中的对象清除;

    二、SpringCache的使用

    1. 创建SpringBoot项目,勾选Core的Cache;
    2. 编写正常的业务逻辑代码;
    3. 在主类上标记@EnableCaching来开启缓存;在Service的实现类的对应的方法上使用上面的注解;
    4. 在配置文件中添加配置来开启日志的打印:logging.level.<package>=true

    相关文章

      网友评论

          本文标题:SpringBoot 06 ~ Cache

          本文链接:https://www.haomeiwen.com/subject/gsibxqtx.html