首页 » 网站建设 » php缓存回写技巧_缓存的直写式和回写式写入策略

php缓存回写技巧_缓存的直写式和回写式写入策略

访客 2024-11-20 0

扫一扫用手机浏览

文章目录 [+]

缓存具有两种基本的写入办法:

直写式(Write Through):将数据同步写入缓存和后端存储设备。

php缓存回写技巧_缓存的直写式和回写式写入策略

回写式(Write Back)(也叫做后写式):首先,将数据写入缓存。
然后,缓存会延缓将这些数据写入至后端存储设备,直到缓存块包含的数据即将被新的数据修正/更换。

php缓存回写技巧_缓存的直写式和回写式写入策略
(图片来自网络侵删)

回写式缓存是更加难以实现的,由于它须要跟踪必须覆盖的缓存位置,并且将它们标记为脏块,稍后才能将个中的数据写入至后端存储设备。
只有当回收脏块的缓存空间时,脏块中的数据才会回写至后端存储设备,这种行为被称为

其他策略也有可能触发数据回写。
客户端可能会大量修正缓存中的数据,然后会显式地关照缓存将数据回写至后端存储设备。

写入操作不会返回任何数据,因此有两种办法可以应对写入未命中(Write Miss)的情形:

写分配(Write Allocate):也叫做写时获取(Fetch On Write)。
这种办法会将发生写入未命中的地址中的数据加载至缓存,然后实行写入命中(Write Hit)操作。
通过这种办法,写入未命中就会类似于读取未命中。

无写分配(No Write Allocate):也叫做写不分配(Write No Allocate)或写附近(Write Around)。
这种办法不会将发生写入未命中的地址中的数据加载至缓存,而是直接将这些数据写入至后端存储设备。
通过这种办法,只有读取操作才会被缓存。

直写式策略和回写式策略都可以利用上述两种写入未命中策略,但是它们常日可以成对利用,如下所示:

回写式缓存会利用写分配策略,期望对相同的位置进行后续的写入操作(或读取操作),此时的数据已经缓存。
读取和写入的流程,如下图所示:

回写式缓存的写分配策略

直写式缓存会利用无写分配策略。
此处,后续的写入操作不会有任何性能改进,由于它们仍旧须要将数据直接写入至后端存储设备。
读取和写入的流程,如下图所示:

直写式缓存的无写分配策略

除了缓存之外的其他实体也有可能会修正后端存储设备中的数据,这就导致缓存中的数据拷贝可能会过期或者迂腐。
或者,当客户端更新缓存中的数据时,这些数据在其他缓存中的拷贝,也会变得迂腐。
缓存管理器之间的通信协议能够担保多个缓存之间的数据同等性,这种协议称为缓存同等性协议。

标签:

相关文章