课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
缓存功能的优化与应用在提高软件性能方面有很大的作用,而今天我们就通过案例分析来了解一下,常见的缓存类型都有哪些。
缓存的类型
按照Redis缓存是否接受写请求,可以分为只读缓存和读写缓存。
只读缓存
只读缓存指读请求会先经过Redis,写操作不会经过Redis,但是会删除相应的数据。当再次读取数据时,会发生缓存缺失,然后从数据库中读取并写入缓存。
读写缓存
读写缓存指除了读请求会发到缓存处理,写请求也会发到缓存处理。
和只读缓存不一样的是,在使用读写缓存时,新的数据是在Redis中,而Redis是内存数据库,一旦出现掉电或宕机,内存中的数据就会丢失。
所以,根据业务应用对数据可靠性和缓存性能的不同要求,会有两种策略,分别是同步直写和异步写回。
同步直写,优先保证数据可靠性:写请求发给缓存,同时也会发给后端数据库进行处理,等到缓存和数据库都写完数据,才给客户端返回。
异步写回,优先提供快速响应:所有写请求都先在缓存中处理,等到这些增改的数据要被缓存淘汰时,缓存再写回后端数据库。
只读缓存和读写缓存的选择
如果需要对写请求进行回事,选择读写缓存。
如果写请求很少,或者是只需要提升读请求的响应速度的话,选择只读缓存。
只读缓存和使用直写策略的读写缓存有什么区别?
使用只读缓存时,是先把修改写到后端数据中,再把缓存中的数据删除。下次访问时,再从后端数据库读取。
优点:数据库和缓存完全一致,缓存中永远保留的是经常访问的热点数据。
缺点:数据删除后访问会触发一次缓存缺失,从后端数据库加载数据到缓存中,这个过程访问延时会变大。
使用读写缓存时,是同时修改数据库和缓存中的值。
优点:被修改后的数据永远在缓存中存在,下次访问直接命中缓存。
缺点:在高并发场景下,可能会导致缓存和数据库的不一致
当数据库或缓存修改失败时:
只读缓存:数据库和缓存中的数据保持一致
读写缓存:可能导致缓存和数据库的不一致
总结一下:只读缓存牺牲一定性能,优先保证数据库和缓存的一致性,更适合对于一致性要求比较高的业务场景。对于数据库和缓存一致性要求不高,或者不存在并发修改同一个值的情况,使用读写缓存比较合适,保证更好的性能。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请在707945861群中学习了解。