
课程咨询: 400-996-5531
投诉建议: 400-111-8989
认真做教育 专心促就业
缓存策略的学习与应用是大多数软件开发程序员都需要熟练掌握的一个编程知识点,而本文我们就通过案例分析来简单了解一下,常见缓存策略都有哪些类型。
1、Read/WriteThrough(读穿/写穿)策略
Read/WriteThrough(读穿/写穿)策略原则是应用程序只和缓存交互,不再和数据库交互,而是由缓存和数据库交互,相当于更新数据库的操作由缓存自己代理了。
ReadThrough策略
先查询缓存中数据是否存在,如果存在则直接返回,如果不存在,则由缓存组件负责从数据库查询数据,并将结果写入到缓存组件,后缓存组件将数据返回给应用。
WriteThrough策略
当有数据更新的时候,先查询要写入的数据在缓存中是否已经存在:
如果缓存中数据已经存在,则更新缓存中的数据,并且由缓存组件同步更新到数据库中,然后缓存组件告知应用程序更新完成。
如果缓存中数据不存在,直接更新数据库,然后返回;
ReadThrough/WriteThrough策略的特点是由缓存节点而非应用程序来和数据库打交道,在我们开发过程中相比CacheAside策略要少见一些,原因是我们经常使用的分布式缓存组件,无论是Memcached还是Redis都不提供写入数据库和自动加载数据库中的数据的功能。而我们在使用本地缓存的时候可以考虑使用这种策略。
2、WriteBack(写回)策略
WriteBack(写回)策略在更新数据的时候,只更新缓存,同时将缓存数据设置为脏的,然后立马返回,并不会更新数据库。对于数据库的更新,会通过批量异步更新的方式进行。
实际上,WriteBack(写回)策略也不能应用到我们常用的数据库和缓存的场景中,因为Redis并没有异步更新数据库的功能。
WriteBack是计算机体系结构中的设计,比如CPU的缓存、操作系统中文件系统的缓存都采用了WriteBack(写回)策略。
WriteBack策略特别适合写多的场景,因为发生写操作的时候,只需要更新缓存,就立马返回了。比如,写文件的时候,实际上是写入到文件系统的缓存就返回了,并不会写磁盘。
但是带来的问题是,数据不是强一致性的,而且会有数据丢失的风险,因为缓存一般使用内存,而内存是非持久化的,所以一旦缓存机器掉电,就会造成原本缓存中的脏数据丢失。所以你会发现系统在掉电之后,之前写入的文件会有部分丢失,就是因为PageCache还没有来得及刷盘造成的。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。