1. 简介
多级缓存是一种常见的性能优化手段,对于多级缓存一般意义上的理解具体主要实现其实指的就是本地缓存
和分布式缓存
。
本地缓存一般采用Caffeine或者Guava Cache来进行实现,而分布式缓存一般采用Redis来进行实现。
2. 业务流程
业务线程先在本地缓存中查询缓存数据,如果获取不到,则从分布式缓存中获取,并将结果存放到本地缓存中,然后返回给客户端。
本地缓存中数据会设置一定的有效期,在数据过期之后,将重复执行此操作,从分布式缓存中获取数据,如下图所示:
3. 优缺点与解决方案
本地缓存和分布式缓存本质上的作用都是为了提高程序的性能,减少对后端的数据存储资源的访问次数,转载请注明原文地址。
- 本地缓存
优点:速度最快,直接存储在业务进程内,方便使用和管理。
缺点:多个节点实例之间的数据不一致,无持久化应用重启后就丢失,缓存容量受限于单进程内存限制,一般比较有限。 - 分布式缓存
优点:支持多个实例共享缓存数据,缓存容量更大,可扩缩容。
缺点:速度相对来讲不如本地缓存,需要考虑故障恢复和一致性问题。
本地缓存同时也是分布式缓存中热key
的一种有效的解决手段,后面考虑写一篇详细介绍,感兴趣的朋友可以关注下。
3.1. 如何保证本地缓存的一致性
- 给缓存数据加一个版本号
当某一个节点的数据发生变更之后,更新这条数据的版本号,并同步到数据库中,然后返回给客户端。客户端下次再来请求时携带这条数据的版本号,若请求到一