Redis实战案例4-缓存更新策略

这篇具有很好参考价值的文章主要介绍了Redis实战案例4-缓存更新策略。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 缓存更新策略

缓存中的数据一致性问题(数据库更新数据,而Redis存的是旧数据)
内存淘汰策略:当内存很充足时,很长时间无法淘汰数据,所以很难控制淘汰,一致性差;
超时剔除:取决于TTL大小,可以达到控制目的,但是在TTL时间内也可能存在数据库更新从而Redis中变成旧数据;
主动更新:也就是同时修改Redis和数据库的数据;

Redis实战案例4-缓存更新策略

2. 主动更新策略

第二种:维护复杂,开发成本大;
第三种:维护异步任务难度大,要实时监控缓存中的变化;其次是一致性难以保证,如果缓存中已经存储了很多数据,但是还没有触发异步更新,这段时间内的缓存和数据库是不一致,当缓存宕机时,此时数据就会彻底丢失;

Redis实战案例4-缓存更新策略
Redis实战案例4-缓存更新策略

这里分析一下先操作缓存还是先操作数据库

  1. 先删除缓存,再操作数据库

正常情况:
Redis实战案例4-缓存更新策略
异常情况(未加锁):这种情况出现的频率高,当删除缓存之后,数据库进行更新时业务复制且较慢,这是线程2就会可能上处理器,此时它去查询缓存时未命中(已删除),这时就去查数据库数据(还未更新),写入缓存的也就会是未更新的旧数据,此时就出现了数据不一致的问题;
这里有个速度差异的问题,读写缓存的速度是很快的,而读写数据库的操作是较慢的,相当于是内存和磁盘的速度差异问题,所以就很有可能出现下面这种情况;

Redis实战案例4-缓存更新策略

  1. 先操作数据库,再删除缓存

正常情况:
Redis实战案例4-缓存更新策略
异常情况:这种情况出现的频率低,两个线程并行执行,且线程1查询缓存时恰好失效(TTL时间到了),这时未命中会去查询数据库,同时查完数据库得到数据10准备去写缓存。但是此时出现另一个线程2插入进来,进行更新数据库操作,并且删除缓存(但此时缓存已经被删除掉了),线程2结束了,线程1进行写缓存操作,之前已经查到的是数据10(因为并不知道已经修改),所以写入缓存10,出现了数据不一致问题;

但是这种情况出现的频率非常低,首先要出现两个线程并行,其次是线程1查询缓存时恰好失效(TTL时间到了),同时线程1查完数据库写缓存时,线程2要求进行更新数据库操作。但是数据库的读写操作较Redis缓存读写操作要慢很多,所以数据库更新完毕之后再写缓存的概率极其低,也就是说极大部分情况在线程1读写完缓存之后,线程2才会进行数据库更新,并且还会删除该缓存。当再次查询时,会再次未命中,重新查询过数据库,最后缓存也就会设置为数据20;
所以在概率的角度来选择也是先操作数据库,再删除缓存,并且可以再加一个超时剔除策略;

Redis实战案例4-缓存更新策略
Redis实战案例4-缓存更新策略文章来源地址https://www.toymoban.com/news/detail-498839.html

到了这里,关于Redis实战案例4-缓存更新策略的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • redis 三种缓存更新策略

    今天聊聊redis 三种缓存更新策略分别是: Cache Aside(旁路缓存)策略; Read/Write Through(读穿 / 写穿)策略; Write Back(写回)策略; 其中 Cache Aside策略是redis和Mysql使用的更新策略,另外两种策略主要使用在计算机系统上。 Cache Aside(旁路缓存)策略是最常用的策略,应用程

    2024年02月15日
    浏览(39)
  • Redis篇:缓存更新策略最佳实践

            缓存更新是redis为了节约内存而设计出来的一个东西,主要是因为内存数据宝贵,当我们向redis插入太多数据,此时就可能会导致 缓存中的数据过多 ,所以redis会对部分数据进行更新,或者把他叫为淘汰更合适,一般有以下三种淘汰策略。 内存淘汰: redis自动进行

    2024年04月24日
    浏览(35)
  • Redis缓存双写一致性之更新策略

    你只要用缓存,就可能会涉及到redis缓存与数据库双存储双写,你只要是双写,就一定会有数据一致性的问题,那么你如何解决一致性问题? 双写一致性,你先动缓存redis还是数据库mysql哪一个?why? 延时双删你做过吗?会有哪些问题? 有这么一种情况,微服务查询redis无m

    2024年02月05日
    浏览(62)
  • redis高级篇 缓存双写一致性之更新策略

    缓存通用查询3部曲 redis 中数据,返回redis 中的数据 redis 中没有,查询数据库并返回 完成第二部的同时,将数据库查询结果写到redis,redis和数据库数据一致. 谈谈双写一致性的理解 1.如果redis 中有数据:需要和数据库中的相同 2.如果redis 中无数据: 数据库中的值如果是最新的

    2024年02月06日
    浏览(63)
  • redis的缓存更新策略以及如何保证redis与数据库的数据一致性

    redis的缓存更新策略有这么几种: 1、由应用直接和redis以及数据库相连接:         查询数据时,应用去redis中查询,查不到的话再由应用去数据库中查询,并将查询结果放在redis;         更新数据时,由应用去触发redis数据的删除以及数据库的update。 2、应用只跟redi

    2024年02月13日
    浏览(57)
  • Redis 原理缓存过期、一致性hash、雪崩、穿透、并发、布隆、缓存更新策略、缓存数据库一致性

    redis的过期策略可以通过配置文件进行配置 redis会把设置了过期时间的key放在单独的字典中,定时遍历来删除到期的key。 1).每100ms从过期字典中 随机挑选20个,把其中过期的key删除; 2).如果过期的key占比超过1/4,重复步骤1 为了保证不会循环过度,导致卡顿,扫描时间上限

    2024年02月08日
    浏览(58)
  • 【案例实战】SpringBoot整合Redis实现缓存分页数据查询

    正式观看本文之前,设想一个问题,高并发情况下,首页列表数据怎么做? 类似淘宝首页,这些商品是从数据库中查出来的吗?答案肯定不是,在高并发的情况下,数据库是扛不住的,那么我们要怎么去扛住C端大并发量呢,这块我们可以借助Redis,我们知道Redis是一个基于内

    2024年02月09日
    浏览(58)
  • 缓存更新策略,先更新数据库还是缓存呢?

    学了这么多,相信大家对缓存更新的策略都已经有了清晰的认识。最后稍稍总结一下。 缓存更新的策略主要分为三种: Cache aside Cache aside 也就是 旁路缓存 ,是比较常用的缓存策略。 (1) 读请求 常见流程 应用首先会判断缓存是否有该数据,缓存命中直接返回数据,缓存未

    2024年02月12日
    浏览(42)
  • 【DB】Redis缓存优化策略之,缓存预热与缓存清除

    1、什么是缓存优化? 缓存是一种数据存储技术 ,用于存储经常访问的数据,以便在需要时快速获取。通过缓存数据,可以减少数据的访问时间和系统的负载,从而提高应用程序的性能。缓存可以应用在多个层次,例如CPU缓存、数据库缓存和Web缓存。 缓存优化 是指通过合理

    2024年01月17日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包