
课程咨询: 400-996-5531
投诉建议: 400-111-8989
认真做教育 专心促就业
缓存的应用能够让系统加载的速度得到有效的提高,而今天我们就通过案例分析来了解一下,目前常见的几种缓存加载方法都有哪些。
1、Cache-Aside
如果从缓存中找到数据,称之为命中缓存,如果没有找到数据,称为之未命中缓存。
Cache-Aside应该是使用为广泛的一种模式。应用直接去缓存中找数据,命中缓存则直接返回,如果未命中缓存,则需要先去数据库中查询数据,并将查询到的数据存储到缓存中。
这种方式会让缓存中的数据与数据库中的数据不一致,所以一般会给缓存中的数据设置过期时间(TTL),数据过期之后就去数据库中取新的数据。
在数据更新时,应该和下文的Write-Around配合,而不要使用Write-Through。
2、Read-ThroughCache
Read-Through的方式与Cache-Aside的方式很接近,区别在于,Cache-Aside是通过应用程序来更新缓存中的数据,而Read-Through则是通过缓存自身来更新数据,也就是说应用和数据库之间不直接进行连接。
这种模式也存在缓存中数据与数据库中数据不一致的情况,但是相比于给缓存设置过期时间,它只需要和Write-Through搭配使用就可以解决这个问题。
3、Write-ThroughCache
上面说了两种以读为主的缓存。Write-Through会先将数据写入到缓存中,然后由缓存将数据存入到数据库中。
Write-Through与Read-Through相结合可以很好的解决缓存和数据库中数据不一致的问题,Write-Through每次都会先更新缓存中的数据,所以每次读到的数据也是新的。
4、Write-Around
Write-Around其实本身并不会用到缓存,而是会直接写入到数据库中。
Cache-Aside为什么要配合Write-Around而不能和Write-Through一起使用呢?
因为Write-Through会先更新缓存,而如果这时刚好有另外一个线程将数据库中旧的数据读取出来将缓存中新的数据覆盖,就会造成数据错误,而使用Write-Around就不会出现这个问题。
Write-Around在某些场景下与Read-Through搭配使用也很有用,对于某些只需要写一次并且读多次的情况,比如聊天信息的写入和获取。
5、Write-Back
Write-Back算是Write-Through的改良版,Write-Through每写一次缓存,缓存就会写一次数据库,而Write-Back则是写了多次缓存后才会写一次数据库,可以大大减轻服务器的压力。
这一模式在MySQL等数据库产品中使用很广泛。
当然,Write-Back也不是没有缺点,如果缓存出现了问题,那么缓存中这部分没有持久化的数据就会丢失。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请在707945861群中学习了解。