Redis三种常用的缓存读写策略

一、Redis三种常用的缓存读写策略

Redis有三种读写策略分别是:旁路缓存模式策略、读写穿透策略、异步缓存写入策略。

这三种缓存读写策略各有优势,不存在最佳,需要我们根据实际的业务场景选择最合适的。

二、旁路缓存模式(Cache Aside Pattern)

旁路缓存模式是我们平时使用比较多的一个缓存读写模式,比较适合读请求比较多的场景。

旁路缓存模式中服务端需要同时维护DBCache,并且是以DB的结果为准。

读写步骤

写:

如下图:

读:

如下图:

思考这样子的一个问题:“如果在写数据的过程中,可以先删除cache,再更新DB吗?

答案: 答案肯定是不行的,因为这样子可能造成数据库和缓存数据不一致的问题,比如这个时候有一个数据在DB和缓存都为100,请求1需要将这个数据更新写成200,如果先删除换出再更新数据库的话,在请求1已经删除缓存但是数据库还没写完的时候,有一个请求2读取数据,首先去缓存读取,发现缓存被删除了,然后去数据库读取得到100(这个时候请求1还没写完)再写入缓存,这个时候请求1写完了,这个时候数据库里数据为200,缓存里为100,不一致。

可以简单描述为:

请求1先把cache中的数据删除 -> 请求2从DB中读取数据 -> 请求1再把DB中的数据更新

紧接着思考:“在写数据的过程中,如果先写BD,再删除cache就不会造成数据不一致了吗?

答案: 理论上来说还是会出现数据不一致的问题,不过概率很小,因为缓存的写入速度是比数据库写入速度快很多。

比如请求1先读数据A,请求2随后写数据A,并且数据A不在缓存中存在的话就会去数据库读取,读取完请求2再更新完并删除缓存,然后请求1把数据A写入缓存,这个时候数据库和缓存就不一致了。

这个过程可以简单的描述为:

请求1从DB读取数据A -> 请求2写更新数据A到数据库再删除cache中的A数据 -> 请求1将数据A写入缓存

缺点

首次请求的数据一定不在cache的问题
解决办法:可以将热点数据提前写入cache中。

写操作比较频繁的话导致cache中的数据会被频繁的删除,这样会影响缓存命中率。

解决办法:

三、读写穿透(Read/Write Through Pattern)

读写穿透中服务端把cache视为主要数据存储,从中读取数据并将数据写入其中。cache服务负责将此数据读取和写入DB,从而减轻应用程序的职责。

读写步骤

写:

如下图:

读:

如下图:

读写穿透实际是在旁路缓存之上进行了封装。在旁路缓存下,发生读请求的时候,如果cache中不存在对应的数据,是由客户端自己负责把数据写入cache,而读写穿透则是cache服务自己来写入缓存,这对客户端是透明的。

和旁路缓存一样,读写穿透也存在首次请求数据一定不在cache中的问题,对于热点数据可以提前写入缓存中。

四、异步缓存写入(Write Behind Pattern)

异步缓存写入和读写穿透很相似,两者都是由cache服务来负责cacheDB的读写。

两者最大的不同点就是:读写穿透是同步更新DBcache,而异步缓存写入则是只更新cache,不直接更新DB,而是改为异步批量的方式更新DB

很明显,这种方式对数据一致性带来了更大的挑战,比如cache数据可能还没异步更新DBcache服务可能就挂了。

这种策略在我们平时开发过程中也非常少见,但是不代表它的应用场景少,比如消息队列中消息的异步写入磁盘、MySQLInnoDB Buffer Pool机制都用到了这种策略。

异步缓存写入的写性能非常高,非常适合写数据经常变化又对数据一致性要求没那么高的场景下使用,比如浏览量、点赞量等。

转载自: juejin.cn/post/70934522

【进击大厂系列 合集】Redis 源码、应用以及原理、存储结构、主从复制、有序集合、跳表

Linux服务器开发/后台架构师 面试题、学习资料、教学视频和学习路线图 有需要的可以自行添加 学习群


代做工资流水公司荆州查询自存银行流水上海在职证明样本遵义贷款银行流水公司开封开背调流水武汉房贷工资流水 代做临沂代做工资流水包头查银行对公流水江门背调工资流水样本蚌埠银行流水PS费用黄冈银行流水单查询武汉代做房贷银行流水唐山代做离职证明南阳打印银行流水烟台代开企业对私流水温州办车贷流水唐山自存银行流水模板台州对公账户流水代做江门打收入证明福州代开背调银行流水长沙打印工作收入证明青岛转账流水代开桂林薪资流水打印兰州房贷银行流水重庆办银行对公流水沧州开背调工资流水新乡打印银行流水修改合肥打印银行流水单芜湖代做工资银行流水赣州银行流水账费用潮州自存流水报价香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

代做工资流水公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化