好久没有写博客了,这段时间一直忙于看论文,写论文,简直头大,感受仍是作项目比较舒服,呵呵,闲话很少说,今天学习了下Guava缓存,这跟Redis相似的,可是适用的场景不同,学习下吧。今天咱们主要是springboot集成Guava缓存是如何实现的,且看下面分析:git
1.GuavaCache的介绍github
在多线程高并发场景中每每是离不开cache的,须要根据不一样的应用场景来须要选择不一样的cache,好比分布式缓存如redis、memcached,还有本地(进程内)缓存如ehcache、GuavaCache。以前用spring cache的时候集成的是ehcache,但接触到GuavaCache以后,被它的简单、强大、及轻量级所吸引。它不须要配置文件,使用起来和ConcurrentHashMap同样简单,并且能覆盖绝大多数使用cache的场景需求!通常而言,对于那些频繁须要查询比对的热点数据,咱们采用使用缓存。redis
Guava的使用:spring
对于数据量较小的,几条,几十条数据,并且须要加缓存的接口较少,这时候咱们会采用Cache,建议使用Google提供的guava Cache,它简单易用的同时,性能也好. 并且线程安全。缓存
GuavaCache毕竟是一款面向本地缓存的,轻量级的Cache,适合缓存少许数据。若是你想缓存上千万数据,能够为每一个key设置不一样的存活时间,而且高性能,那并不适合使用GuavaCache.安全
Redis的使用:springboot
对于那些较大数据量的,或者须要加缓存的接口较多的项目,能够去考虑Redis,memcached等等多线程
2. 如何使用Cache并发
和Map的使用方式差很少,put与get存放key和获取值。分布式
三、Guava缓存的使用:
通常的cache都会实现的基础功能包括:
通常缓存会提供一个存储缓存的容器,该容器实现了存放(Put)和读取(Get)缓存的接口供外部调用。 缓存一般以<key,value>的形式存在,经过key来从缓存中获取value。固然容器的大小每每是有限的(受限于内存大小),须要为它设置清除缓存的策略。
在GuavaCache中缓存的容器被定义为接口Cache<K, V>的实现类,这些实现类都是线程安全的,所以一般定义为一个单例。而且接口Cache是泛型,很好的支持了不一样类型的key和value。
四、springboot集成guava缓存
SpringBoot为咱们提供了自动配置多个CacheManager的实现
功能仍是很强大的。
(1)首先添加jar包:
(2)封装一个cache工具类
(3)在使用的时候调用这个工具类便可。
固然这是很传统的方式来使用guava缓存,springboot集成guava不少时候是基于注解的开发使用的。
关于springboot中cache的使用,咱们能够参考下一位博主的github代码:
https://github.com/lianggzone/springboot-action/tree/master/springboot-action-cache
这里面集成了ecahce和guava的一些内容。
不得不说springboot的贡献之大,很是感谢!