问题场景
一个系统经过压测发现并发能力不理想,需要加缓存,已知:对一致性要求不高,需要缓存的数据量也可控,问:该如何选择缓存框架?
- 这个情况的话,用客户端缓存就行了,客户端缓存有很多框架可供选择:Ehcache、Guava Cache、Spring Cache;
Ehcache 特点
- 多级缓存策略,可以嵌入 Hibernate,Mybatis 中;
- 缓存的数据可以放在内存或磁盘中;
- 缓存的数据在 JVM 重启的时候可以写入磁盘中;
- 可以使用 RMI 或接口的方式实现分布式缓存;
- 允许注册事件来监听缓存,当缓存的数据增删改的时候,可以收到一个通知;
Guava Cache 特点
- 相对于 CurrentHashMap,会限制内存的使用,会自动回收内存;
Spring Cache
- 通过少量配置就可以使得既有代码支持缓存;
- 不用安装或部署额外的第三方组件就可以使用缓存;
- 支持 Spring Express Language,可以支持变量的定义和一些表达式;
- 支持 AspectJ,通过注解,可以实现缓存的提前加载或删除;
- 支持自定义 key,具有相当的灵活性和扩展性;
客户端缓存的区别与选型
缓存框架 | 能否持久化 | 是否有集群方案 | 体积是否庞大 | 是否有辅助功能 | 是否轻量 |
---|---|---|---|---|---|
Ehcahe | 是 | 是 | 相对大 | 有 | 否 |
Guava Cache | 否 | 否 | 否 | 否 | 是 |
Spring Cache | 否 | 否 | 否 | 否 | 是 |
- Spring Cache 不仅可以自己使用,还可以与其他缓存框架做整合;
- 对于文章一开始的场景,可以使用 Spring Cache + Ehcache 的组合方式;
网友评论