zoukankan      html  css  js  c++  java
  • 浅谈缓存的使用姿势

    常见的缓存策略

    Cache Aside 策略(也叫旁路缓存策略,平时最常用)

    这个策略数据 以数据库中的数据为准,缓存中的数据是按需加载的 。它可以分为读策略和写策略,

    读策略的步骤是:

    • 从缓存中读取数据;
    • 如果缓存命中,则直接返回数据;
    • 如果缓存不命中,则从数据库中查询数据;
    • 查询到数据后,将数据写入到缓存中,并且返回给用户。

    写策略的步骤是:

    • 更新数据库中的记录;
    • 删除缓存记录。

    Read/Write Through(读穿 / 写穿)策略

    这个策略的核心原则是用户只与缓存打交道,由缓存和数据库通信,写入或者读取数据 。这就好比你在汇报工作的时候只对你的直接上级汇报,再由你的直接上级汇报给他的上级,你是不能越级汇报的。

    Write Through 的策略是这样的:先查询要写入的数据在缓存中是否已经存在,如果已经存在,则更新缓存中的数据,并且由缓存组件同步更新到数据库中,如果缓存中数据不存在,我们把这种情况叫做 Write Miss(写失效)。

    一般来说,我们可以选择两种 Write Miss 方式:

    • Write Allocate(按写分配)

      做法是写入缓存相应位置,再由缓存组件同步更新到数据库中;

    • No-write allocate(不按写分配)

      做法是不写入缓存中,而是直接更新到数据库中

    Write Back(写回)策略

    这个策略的核心思想是 在写入数据时只写入缓存,并且把缓存块儿标记为 「脏」 的。而脏块儿只有被再次使用时才会将其中的数据写入到后端存储中。

    需要注意的是, 在 Write Miss 的情况下,我们采用的是 Write Allocate 的方式,也就是在写入后端存储的同时要写入缓存,这样我们在之后的写请求中都只需要更新缓存即可,而无需更新后端存储了。

  • 相关阅读:
    VS2017代码对齐快捷键
    C#中的List的使用方法
    哈希表的基本使用
    javascript教程
    未能加载文件或程序集 Microsoft.Office.Interop.Excel, Version=14.0.0.0
    EXCEL 找不到编译动态表达式所需的一个或多个类型。是否缺少引用?解决办法
    C#跨线程操作控件
    Log4NET将日志写入数据库中
    winform ListView和DataGridView实现分页
    ListView在WinForm中多用于表的构建
  • 原文地址:https://www.cnblogs.com/pzyin/p/14714310.html
Copyright © 2011-2022 走看看