Notice: 函数 WP_Scripts::localize 的调用方法不正确$l10n 参数必须是一个数组。若要将任意数据传递给脚本,请改用 wp_add_inline_script() 函数。 请查阅调试 WordPress来获取更多信息。 (这个消息是在 5.7.0 版本添加的。) in /data/www/appblog/wp-includes/functions.php on line 6131

Ehcache与Guava Cache的区别浅谈

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

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

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

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

适用Ehcache的情况

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

适用Guava cache的情况

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

总结

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

上一篇 SpringBoot+Druid+MyBatis配置多数据源
下一篇 注解 @AutoConfigureBefore 和 @AutoConfigureAfter 的用途