基于Google Guava实现本地缓存cache 有更新!
缓存在很多情况下非常实用。例如,计算或检索一个值的代价很高,并且对同样的输入需要不止一次获取值的时候,就应当考虑使用缓存。
Guava Cache与ConcurrentMap很相似,但也不完全一样。最基本的区别是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
评论
发表评论
|
|