• 缓存更新的套路


    缓存更新的套路

    更新缓存的Design Pattern有四种:Cache aside,Read through,Write through,Write behind caching

    Cache Aside Pattern

    这是最常用最常用的pattern了,其具体逻辑如下:

    • 失效:应用程序先从cache取数据,没有得到,则从数据库中取数据,成功后,放到缓存中
    • 命中:应用程序从cache中取数据,取到后返回
    • 更新:先把数据存到数据库中,成功后,再让缓存失效

    Read/Write Through Pattern

    在上面的Cache Aside套路中,我们的应用代码需要维护两个数据存储,一个是缓存,一个是数据库。所以,应用程序比较啰嗦。而Read/Write Through套路是把更新数据库的操作由缓存自己代理了,所以,对于应用层来说,就简单得多了。可以理解为,应用认为后端就是在一个单一的存储,而存储自己维护自己的cache

    Read Through

    Read Through套路就是在查询操作中更新缓存,也就是说,当缓存失效的时候(过期或LRU换出),Cache Aside是由调用方负责把数据加载入缓存,而Read Through则用缓存服务自己来加载,从而对应用方是透明的。

    Write Through

    Write Throygh套路和Read Through相仿,不过是在更新数据时发生,当有数据更新的时候,如果没有命中缓存,直接更新数据库,然后返回。如果命中了缓存,则更新缓存,然后再由Cache自己更新数据库(这是一个同步操作 )

    Write Behind Caching Pattern

    Write Behind又叫Write Back。一些了解Linux操作系统内核的同学对write back应该非常熟悉,这不就是linux文件系统的Page Cache的算法吗?Write Back套路,一句话就是,在更新数据的时候,只更新缓存,不更新数据库,而我们的缓存会异步地批量更新缓存库。这个设计的好处就是让数据的IO操作飞快无比(因为直接操作内存吗),因为异步,write backg还可以额合并对同一个数据的多次操作,所以性能的提高是相当可观的。

    转载:http://coolshell.cn/articles/17416.html

  • 相关阅读:
    asp.net获取服务端和客户端信息
    ASP.NET 中JSON 的序列化和反序列化
    Asp.net TextBox常规输入验证
    ADO.NET中的五个主要对象
    .Net一般处理程序来实现用户名的验证
    .net获取当前网址url(各种参数值)
    hdu-1941 Find the Shortest Common Superstring
    字典树的动态与静态模板
    模板 Dijkstra+链式前向星+堆优化(非原创)
    基础深搜小结
  • 原文地址:https://www.cnblogs.com/uglyliu/p/6223253.html
Copyright © 2020-2023  润新知