redis如何更新缓存


redis更新缓存的的design pattern有四种:cache aside, read through, write through, write behind caching,我们下面一一来看一下这四种pattern。

redis如何更新缓存
Cache Aside Pattern

这是最常用最常用的pattern了。其具体逻辑如下:    (推荐学习:Redis视频教程)

失效:应用程序先从cache取数据,没有得到,则从数据库中取数据,成功后,放到缓存中。

命中:应用程序从cache中取数据,取到后返回。

更新:先把数据存到数据库中,成功后,再让缓存失效。

注意,我们的更新是先更新数据库,成功后,让缓存失效。那么,这种方式是否可以没有文章前面提到过的那个问题呢?我们可以脑补一下。

一个是查询操作,一个是更新操作的并发,首先,没有了删除cache数据的操作了,而是先更新了数据库中的数据,此时,缓存依然有效,所以,并发的查询操作拿的是没有更新的数据。

但是,更新操作马上让缓存的失效了,后续的查询操作再把数据从数据库中拉出来。而不会像文章开头的那个逻辑产生的问题,后续的查询操作一直都在取老的数据。

redis-3.jpg

Read Through

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

Write Through

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

SDCMS-B2C商城网站管理系统 SDCMS-B2C商城网站管理系统

SDCMS-B2C商城网站管理系统是一个以php+MySQL进行开发的B2C商城网站源码。 本次更新如下: 【新增的功能】 1、模板引擎增加包含文件父路径过滤; 2、增加模板编辑保存功能过滤; 3、增加对统计代码参数的过滤 4、新增会员价设置(每个商品可以设置不同级不同价格) 5、将微信公众号授权提示页单独存放到data/wxtemp.php中,方便修改 【优化或修改】 1、修改了check_b

SDCMS-B2C商城网站管理系统 13 查看详情 SDCMS-B2C商城网站管理系统

下图自来Wikipedia的Cache词条。其中的Memory你可以理解为就是我们例子里的数据库。

redis-4.jpg

Write Behind Caching Pattern

Write Behind 又叫 Write Back。一些了解Linux操作系统内核的同学对write back应该非常熟悉,这不就是Linux文件系统的Page Cache的算法吗?是的,你看基础这玩意全都是相通的。所以,基础很重要,我已经不是一次说过基础很重要这事了。

Write Back套路,一句说就是,在更新数据的时候,只更新缓存,不更新数据库,而我们的缓存会异步地批量更新数据库。

这个设计的好处就是让数据的I/O操作飞快无比(因为直接操作内存嘛 ),因为异步,write backg还可以合并对同一个数据的多次操作,所以性能的提高是相当可观的。

但是,其带来的问题是,数据不是强一致性的,而且可能会丢失(我们知道Unix/Linux非正常关机会导致数据丢失,就是因为这个事)。

在软件设计上,我们基本上不可能做出一个没有缺陷的设计,就像算法设计中的时间换空间,空间换时间一个道理,有时候,强一致性和高性能,高可用和高性性是有冲突的。软件设计从来都是取舍Trade-Off。

另外,Write Back实现逻辑比较复杂,因为他需要track有哪数据是被更新了的,需要刷到持久层上。操作系统的write back会在仅当这个cache需要失效的时候,才会被真正持久起来,比如,内存不够了,或是进程退出了等情况,这又叫lazy write。

在wikipedia上有一张write back的流程图,基本逻辑如下:

redis-5.jpg

更多Redis相关技术文章,请访问Redis入门教程栏目进行学习!

以上就是redis如何更新缓存的详细内容,更多请关注其它相关文章!


# 中取  # 日本新媒体推广网站排行  # 淘宝客网站如何建设  # 霍邱全网营销网络推广  # 营口网站优化办理流程  # 官网推广海报图片网站  # 新店推广怎么做好营销  # seo怎么挖关键词  # 发布营销推广违规吗  # 营销推广方法技巧  # 山东鹤壁网站建设  # redis  # 应用程序  # 如何实现  # 自来  # 网络带宽  # 最常用  # 很重要  # 数据库中  # 都是  # 网站管理系统 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894


相关推荐: B站怎么开|直播| B站|直播|申请需要什么条件【新手必看】  Mac hosts文件在哪里_Mac修改hosts文件详细教程  AO3永久镜像入口开放_AO3最新网址兼容所有浏览器  CSS布局中意外顶部空白的调试与解决:深入理解padding-top  rabbitmq 持久化有什么缺点?  背部总是隐隐作痛怎么回事 背痛如何改善  天天漫画2025最新入口 天天漫画永久有效登录入口  Python高效统计字典嵌套列表值在目标列表中的出现次数  J*aScript包管理器_Npm与Yarn对比  实现可重用自定义Python Range类  解决CSS容器溢出问题:使用calc()实现精确布局与边距控制  PointNet++语义分割模型中类别变更引发的断言错误及标签处理策略  J*aScript中高效处理用户输入:从Keyup事件到表单提交的优化实践  QQ网站入口直接登录 QQ官方正版登录页面  荣耀盒子应用管理技巧  《真我》申请退款方法  《单词速记宝》设置学习计划方法  PHP与SQL实践:高效实现数据复制与特定列值修改  手机雨课堂网页版入口免登录 雨课堂网页版可点击直接进入  安居客移动经纪人怎么设置自动回复?-安居客移动经纪人设置自动回复的方法  Magento 2 产品保存事件中安全更新属性的最佳实践  拷贝漫画2025网页版入口 拷贝漫画官网免费看全集  《爱南宁》认证电动车方法  如何使用 composer 和 aop-php 实现 AOP 编程?  TikTok收藏夹无法删除视频如何解决 TikTok收藏管理优化方法  苹果自助维修计划支持哪些设备机型  《土豆雅思》修改密码方法  海棠阅读登录教程_详细讲解海棠登录操作  《环球网校》设置报考省市方法  Python中处理嵌套字典与列表的数据提取与过滤教程  《下一站江湖2》独孤剑诀习得方法  《大润发优鲜》充值方法介绍  Apple Music无故扣费引质疑  PySimpleGUI中实现键盘按键与按钮事件绑定教程  《万兴喵影》导出视频方法  CSS过渡如何实现按钮悬停效果_transition属性控制背景颜色变化  sublime text 4如何安装_最新版sublime下载与汉化教程  12306不能订票的时间段是固定的吗? | 节假日购票时间有无变化  疯狂小鸟微信小游戏入口 疯狂小鸟网页版秒玩  mysql如何管理数据库账户_mysql数据库账户管理技巧  优化Flask模板中SQLAlchemy查询迭代标签:处理字符串空格问题  《sketchbook》选中部分图案移动方法  wps文字怎么设置文字环绕图片的方式_wps文字如何设置文字环绕图片方式  Lar*el 中高效执行多列更新:单次查询实现  4399正版网页版入口高清直达链接  基于键值条件高效映射 Pandas DataFrame 多列数据  《金山词霸》语音翻译方法  Python类装饰器动态修改方法时的类型提示:Mypy插件实现精确静态分析  使用VS Code调试Python代码:从入门到精通  京东物流快递破损了怎么办_京东快递破损理赔流程 

 2019-11-27

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.