本文主要整理缓存的设计模式属于基本的原理级别,但是却是现在众多缓存技术的基础与基石,虽然作者本人也是初出茅庐的菜鸟级程序员,但是读到研究生阶段的学习经历也让我总结出不少经验-----基础原理太重要了!!!在这提醒还处于学生阶段的老铁一定记住这句话,在学校一定要好好学习基础知识啊!!!(以后你会知道大用处的)
备注: 文章可能写的看起来有些枯燥?,临时总结导致。
更新缓存是设计主要有四种模式:
- cache aside
- cache through
- write through
- write behind caching
一、cache aside pattern
这种模式是最基本的缓存模式,在实际应用中主要体现在以下三个方面。
- 失效:缓存失效的场景中,应用程序首先从cache查找数据,没有命中目标,这是则从数据库中获取数据,成功获的数据后,放到缓存中。
- 命中:表示应用程序从缓存中命中数据,则从缓存中获得数据返回。
- 更新(易出错):应用程序先将数据存储到数据中,成功之后,再让缓存失效(注意先后顺序)。
二、read/write through pattern
对比与第一条模式中应用程序需要维护两个数据库(一个缓存,一个数据库),本条设计模式的原则是让数据库自己维护自己的缓存,在应用程序看来数据层就是一个单一的存储源。
其中,read through是在读的时候更新缓存,而write through则是在更新的时候执行,这个分为两种情况,一种是在更新的时候如果命中缓存,则更新缓存,然后再由缓存去自己更新数据库。另一种情况是更新的时候没有命中缓存,则直接更新数据库。
三、write behind caching pattern
这种模式类似于Linux中的page cache原理,即数据更新时紧紧更新缓存,不更新数据库,后期由缓存异步的、批量的更新数据库,这种模式会极大的提高数据写入速度没因为直接在内存层面操作。但也会带来一些列不足,比如无法保证数据的强一致性,系统非正常关机的情况下可能会导致数据丢失。