很久没有写博客了,这段时间一直忙于看论文,写论文,简直头大,感觉还是做项目比较舒服,呵呵,闲话不多说,今天学习了下Guava缓存,这跟Redis类似的,但是适用的场景不一样,学习下吧。今天我们主要是springboot集成Guava缓存是如何实现的,且看下面分析:

1.GuavaCache的介绍

在多线程高并发场景中往往是离不开cache的,需要根据不同的应用场景来需要选择不同的cache,比如分布式缓存如redis、memcached,还有本地(进程内)缓存如ehcache、GuavaCache。之前用spring cache的时候集成的是ehcache,但接触到GuavaCache之后,被它的简单、强大、及轻量级所吸引。它不需要配置文件,使用起来和ConcurrentHashMap一样简单,而且能覆盖绝大多数使用cache的场景需求!一般而言,对于那些频繁需要查询比对的热点数据,我们采用使用缓存。

Guava的使用:

对于数据量较小的,几条,几十条数据,而且需要加缓存的接口较少,这时候我们会采用Cache,建议使用Google提供的guava Cache,它简单易用的同时,性能也好. 而且线程安全。

GuavaCache毕竟是一款面向本地缓存的,轻量级的Cache,适合缓存少量数据。如果你想缓存上千万数据,可以为每个key设置不同的存活时间,并且高性能,那并不适合使用GuavaCache.

Redis的使用:

对于那些较大数据量的,或者需要加缓存的接口较多的项目,可以去考虑Redis,memcached等等

2. 如何使用Cache

和Map的使用方式差不多,put与get存放key和获取值。

3、Guava缓存的使用:

一般的cache都会实现的基础功能包括:

一般缓存会提供一个存储缓存的容器,该容器实现了存放(Put)和读取(Get)缓存的接口供外部调用。 缓存通常以<key,value>的形式存在,通过key来从缓存中获取value。当然容器的大小往往是有限的(受限于内存大小),需要为它设置清除缓存的策略。

在GuavaCache中缓存的容器被定义为接口Cache<K, V>的实现类,这些实现类都是线程安全的,因此通常定义为一个单例。并且接口Cache是泛型,很好的支持了不同类型的key和value。

4、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的贡献之大,非常感谢!

最新文章

  1. 腾讯bugly 的crash 上报和umeng的比较
  2. 关于GET请求带Body的问题
  3. NOIP2015-stone(二分答案)
  4. 解决ubuntu16.04下的sublime text3不能使用Fcitx下的搜狗输入法的问题
  5. relativelayout常用属性
  6. Android实现 再按一次退出 的三种方法 durationTime、timerTask 和Handler
  7. .NET开发邮件发送功能
  8. KoaHub.JS基于Node.js开发的处理和显示日期代码
  9. IIS 部署WCF服务注意事项
  10. RoportNG报表显示中文乱码和TestNG显示中文乱码实力解决办法
  11. 《Flask Web开发——基于Python的Web应用开发实践》一字一句上机实践(上)
  12. python 打开文件基础 (笔记)
  13. Vue-Cli 搭建项目 小白
  14. C++ code:数值计算之矩形法求解积分问题
  15. 在Spring Boot中使用 @ConfigurationProperties 注解, @EnableConfigurationProperties
  16. linux centos7 安装mono
  17. openwrt用WEB刷固件型号不对问题强行处理
  18. 磁盘I/O的性能评估方法
  19. Hadoop专业解决方案-第12章 为Hadoop应用构建企业级的安全解决方案
  20. (2)Oracle基础--表空间

热门文章

  1. day05 字典 dict
  2. 如何通俗理解贝叶斯推断与beta分布?
  3. JUnit initializationError错误
  4. 第三次ScrumMeeting博客
  5. centos上搭建git服务--2
  6. Beta发布——视频博客
  7. 跨域写cookie
  8. 设计模式PHP篇(三)————适配器模式
  9. docker 开启远程
  10. PHP中面向对象编程思想的3个特征