现金 如果对命中率有严格的业务要求,可以考虑以下两种解决方案:

你好,我是小林。

今天我们来谈谈常见的现金更新策略。

缓存策略

写入备份策略

在实际开发中,Redis和MySQL的更新策略使用的是Cache Aside,另外两种策略主要适用于计算机系统。

Cache Aside策略是最常见的,应用程序直接与“数据库、缓存”交互,负责缓存维护,该策略可细分为“读取策略”和“写入策略”。

要写策略:

在从缓存中删除数据之前,更新数据库中的数据。

要导入策略:

如果导入的数据命中高速缓存,则直接返回数据。

如果读取的数据未命中缓存,则从数据库读取数据,将数据写入缓存,然后返回用户。

注:写入策略步骤的顺序不能颠倒。也就是说,您不能先删除缓存,然后再更新数据库。原因是,如果同时执行“读+写”,则会出现高速缓存和数据库数据不一致的问题。

例如,假设某个用户的年龄为20,请求A更新用户年龄为21,从而删除缓存中的内容。此时,另一请求B读取该用户的年龄。如果发现查询高速缓存未命中,则从数据库读取年龄为20,写入高速缓存,然后请求A继续数据库的变更,将用户的年龄更新为21。

最终,用户年龄在高速缓存中为20,高速缓存与数据库数据不匹配。

为什么“更新数据库后删除缓存”没有数据不一致

继续分析“读写”请求的并发场景。

如果高速缓存中不存在用户数据,则在请求读取数据时从数据库查询到年龄20,当未写入高速缓存时,另一个请求B更新数据。更新数据库的年龄为21,缓存为空。此时,A请求将从数据库读出的年龄20的数据写入高速缓存。

最终,用户年龄在高速缓存中为20,高速缓存与数据库数据不匹配。根据上述理论分析,更新数据库后删除缓存也会出现数据不一致的问题,但实际上出现该问题的概率并不高。

由于对高速缓存的写入通常比对数据库的写入快得多,所以实际上,请求B更新数据库,删除高速缓存,在请求A更新高速缓存之后更新高速缓存是很困难的。另一方面,如果请求A在请求B删除高速缓存之前更新高速缓存,则下一个请求将从数据库重新读取数据,因为高速缓存未命中。

缓存识别策略适用于读写较少的场景,因为写操作频繁会频繁地清除缓存中的数据并影响缓存的命中率。现金 如果对命中率有严格的业务要求,可以考虑以下两种解决方案:。

一种方法是在更新数据时更新缓存。只需在更新缓存之前加上分布式锁。这样,在同一时间只有一个线程可以更新缓存,这样就不会出现并发问题。当然,写入性能会受到一些影响。

另一种方法同样是在更新数据时更新缓存,只需在缓存上加上较短的过期时间,即使发生缓存不匹配,缓存的数据也会很快过期,并接受对业务的影响。

查询高速缓存中的数据是否存在,存在时直接返回,不存在时高速缓存组件从数据库查询数据,将结果写入高速缓存组件,最后高速缓存组件将数据返回应用程序。

如果有数据更新,请查询高速缓存中是否已存在要写入的数据。

如果缓存中的数据已存在,则更新缓存中的数据,由缓存组件同步更新到数据库,然后缓存组件通知应用程序更新已完成。

如果缓存中没有数据,则直接更新数据库并返回。

更新数据时,Write Back策略只更新缓存,同时将缓存数据设置为脏,然后立即返回,不更新数据库。数据库更新通过批量异步更新进行。

事实上,由于Redis不具有异步更新数据库的能力,因此Write Back策略也不能应用于常见的数据库和高速缓存场景。

Write Back是在CPU的高速缓存等计算机架构中的设计,操作系统中的文件系统的高速缓存采用了Write Back策略。

Write Back策略特别适用于写入较多的场景。因为如果发生写入操作,只需更新缓存即可立即返回。例如,在写文件时,实际写入文件系统的缓存会返回,而不会写磁盘。

然而,数据并不具有很强的一致性,高速缓存通常使用内存,但内存是非持久的,因此存在这样的问题:高速缓存机器断电后,原始高速缓存中的脏数据有丢失的危险。因此,在系统断电后,您会发现以前写入的一些文件已丢失,因为页缓存没有足够的时间来刷磁盘。

在此粘贴使用写入备份策略的CPU高速缓存和内存流程图。

你觉得你熟悉这个流程吗。因为我在写CPU缓存文章的时候说过。

面试篇:

3万字+40张图突破40道一般面试题

数据类型篇:

2万字+30张图详细说明Redis的9种数据类型和应用场景

2万字+40张图|图解Redis9种数据结构的实现

持久化篇:

AOF持久化是如何实现的。

RDB快照是如何实现的。

功能篇:

Redis过期删除策略与内存淘汰策略的区别是什么

高可用性篇:

初级 从属 复制是如何实现的。

为什么有哨兵。

缓存篇:

缓存平衡、突破、穿透是什么

如何保证数据库和高速缓存的完整性


发表评论

Copyright 2002-2022 by 天天顺物流供应链官网(琼ICP备2022001899号-3).All Rights Reserved.