zoukankan      html  css  js  c++  java
  • Ehcache与Guava Cache的区别浅谈

    最近在做一些缓存改造的场景,有如下一些经验总结:

    缓存版本:

    Ehcache:2.8.3
    Guava:17.0

    1. Ehcache支持持久化到本地磁盘,Guava不可以;
    2. Ehcache有现成的集群解决方案,Guava没有。不过个人感觉比较鸡肋,对JVM级别的缓存来讲太重了;
    3. Ehcache jar包庞大,Guava Cache只是Guava jar包中的工具之一,而且后者远远小于Ehcache;
    4. 两种缓存当缓存过期或者没有命中的时候都可以通过load接口重载数据,调用方式略有不同。两者的主要区别是Ehcache的缓存load的时候,允许用户返回null,而Guava Cache则不允许返回为null,因为Guava Cache是根据value的值是否为null来判断是否需要load,所以不允许返回为null,但是使用的时候可以使用空对象替换。不允许返回null是一个很好的考虑;
    5. Ehcache有内存占用大小统计,Guava Cache没有,需要自己开发;
    6. Ehcache在put缓存的时候,对K、V都做了包装,对GC有一定影响。

    什么时候适用Ehcache、什么时候适用Guava cache?

    首先,两者都是很成熟的JVM级别缓存,所以在绝大多数情况都是可以满足要求的。

    适用Ehcache的情况

    1. 需要持久化持久化。使用持久化功能需要,缓存稳定,以免持久化的数据不准确影响结果。
    2. 有集群解决方案。

    适用Guava cache的情况
    Guava cache说简单点就是一个支持LRU的ConCurrentHashMap,它没有Ehcache那么多的各种特性,只是提供了增、删、改、查、刷新规则和时效规则设定等最基本的元素。做一个jar包中的一个功能之一,Guava cache极度简洁并能满足觉大部分人的要求。

    总结
    Ehcache有着全面的缓存特性,但是略重。Guava cache有最基本的缓存特性,很轻。大家根据具体情况选择使用。

  • 相关阅读:
    springboot + swagger的实体类属性注解
    Idea破解办法+idea免费生成注册码+jsp属性选择器+注解什么的都报错
    springboot笔记(一)
    docker-compose 安装
    Spring cloud 分布式锁
    Mybait 快速生成Java POJO文件 及数据库Mapping文件。
    Git 提交所有文件
    Docker dockerfile-maven-plugin 使用
    Docker remote api 开启
    Linux git 关联 github仓库
  • 原文地址:https://www.cnblogs.com/liushijie/p/5217981.html
Copyright © 2011-2022 走看看