zoukankan      html  css  js  c++  java
  • springboot集成Guava缓存

    很久没有写博客了,这段时间一直忙于看论文,写论文,简直头大,感觉还是做项目比较舒服,呵呵,闲话不多说,今天学习了下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的贡献之大,非常感谢!

  • 相关阅读:
    openresty + gor+minio 集成
    openresty docker 镜像集成gor
    goreplay v1.1.0 支持pro特性docker 镜像
    编译goreplay v1.1.0 minio 集成支持
    编译goreplay v1.1.0 支持二进制协议捕捉
    goreplay v1.1.0 发布
    super-expressive 可以基于js 直接编写正则
    monio 的一些安全实践
    minio+ nginx rewrite 实现saas租户的个性化管理
    LDAP概念和原理介绍
  • 原文地址:https://www.cnblogs.com/fengli9998/p/7805692.html
Copyright © 2011-2022 走看看