基于Google Guava实现本地缓存cache 有更新!

  |   0 评论   |   3,248 浏览

      缓存在很多情况下非常实用。例如,计算或检索一个值的代价很高,并且对同样的输入需要不止一次获取值的时候,就应当考虑使用缓存。

      Guava CacheConcurrentMap很相似,但也不完全一样。最基本的区别是ConcurrentMap会一直保存所添加的元素,直到显式的移除;Guava Cache为了限制内存的占用,通常都是设定为自动回收元素。在某些场景下,尽管LoadingCahe不回收元素,但是它还是很有用的,因为它会自动加载缓存。

    • Guava Cache适用场景:

      • 你愿意消耗一部分内存来提升速度;
      • 你已经预料某些值会被多次调用;
      • 缓存数据不会超过内存总量;
    • 缓存有很多种解决方案,常见的是:

      • 1.存储在内存中: 内存缓存顾名思义直接存储在JVM内存中,JVM宕机那么内存丢失,读写速度快,但受内存大小的限制,且有丢失数据风险。
      • 2.存储在磁盘中: 即从内存落地并序列化写入磁盘的缓存,持久化在磁盘,读写需要IO效率低,但是安全。
      • 3.内存+磁盘组合方式:这种组合模式有很多成熟缓存组件,也是高效且安全的策略,比如redis。

      本文分析常用的内存缓存:google cache。源码包:com.google.guava:guava:2.2.0 jar包下的com.google.common.cache包,适用于高并发读写场景,可自定义缓存失效策略。

    工具包地址:
    https://github.com/tonfay/spring-boot-tonfay/tree/master/spring-boot-tonfay-cache

    采用文献:
    https://www.cnblogs.com/dennyzhangdd/p/8981982.html#_label3_0
    https://www.cnblogs.com/parryyang/p/5777019.html

    评论

    发表评论

    validate