redis的缓存更新策略

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

目录

三种缓存更新策略

业务场景:

 主动更新的三种实现

操作缓存和数据库时有三个问题

  1.删除缓存还是更新缓存?

  2.如何保证缓存与数据库的操作的同时成功或失败?

  3.先操作缓存还是先操作数据库?

缓存更新策略的最佳实践方案:


三种缓存更新策略

  1. 内存淘汰(Eviction)策略:Redis在内存不足时,会根据预设的策略选择一些键进行淘汰,释放内存空间。Redis默认提供了以下几种淘汰策略:

    当数据超出可用内存时,Redis将根据配置的淘汰策略进行自动选择。你不需要手动指定淘汰策略,除非你希望自定义新的淘汰策略。

    • LRU(Least Recently Used,最近最少使用):淘汰最长时间未被访问的键。
    • LFU(Least Frequently Used,最不经常使用):淘汰访问频率最低的键。
    • Random(随机):随机选择键进行淘汰。
  2. 超时剔除(TTL,Time To Live):在向Redis存储数据时,可以为每个键设置一个过期时间。一旦过期时间到达,该键会自动被Redis删除。超时剔除策略是一种主动更新策略,适用于需要在一定时间后自动移除数据的场景。

  3. 主动更新:当你在操作数据库时,同时对Redis进行操作,以保持数据的一致性。这可以通过在操作数据库之后,更新或重置对应的Redis键值对来实现。

redis的缓存更新策略,redis,缓存,redis,数据库

业务场景:

低一致性需求:使用内存淘汰机制。例如店铺类型的查询缓存
高一致性需求:主动更新,并以超时剔除作为兜底方案。例如店铺详情查询的缓存

 主动更新的三种实现

redis的缓存更新策略,redis,缓存,redis,数据库

操作缓存和数据库时有三个问题

  1.删除缓存还是更新缓存?

        更新缓存:每次更新数据库都更新缓存,无效写操作较多(不建议采用)

        删除缓存:更新数据库时让缓存失效,查询时再更新缓存

  2.如何保证缓存与数据库的操作的同时成功或失败?

        单体系统,将缓存与数据库操作放在一个事务

        分布式系统,利用TCC等分布式事务方案

  3.先操作缓存还是先操作数据库?

        一定要先操作数据库,再删除缓存,如果先删除缓存,再操作数据库在多线程的情况下,会导致缓存拿到数据库旧的数据

缓存更新策略的最佳实践方案:

1. 低一致性需求:使用 Redis 自带的内存淘汰机制
2. 高一致性需求:主动更新,并以超时剔除作为兜底方案

读操作:文章来源地址https://www.toymoban.com/news/detail-627443.html

缓存命中则直接返回
缓存未命中则查询数据库,并写入缓存,设定超时时间
写操作:
先写数据库,然后再删除缓存
要确保数据库与缓存操作的原子性

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

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

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

相关文章

  • springboot+redis+mysql+quartz-通过Java操作redis的KEYS*命令获取缓存数据定时更新数据库

    代码讲解: 3-点赞功能-定时持久化到数据库(pipeline+lua)-完善过程2_哔哩哔哩_bilibili https://www.bilibili.com/video/BV1w14y1o7BV 本文章代码: blogLike_schedule/like03 · xin麒/XinQiUtilsOrDemo - 码云 - 开源中国 (gitee.com) https://gitee.com/flowers-bloom-is-the-sea/XinQiUtilsOrDemo/tree/master/blogLike_schedule/like03 数据

    2024年02月15日
    浏览(40)
  • springboot+redis+mysql+quartz-使用pipeline+lua技术将缓存数据定时更新到数据库

    代码讲解:7.3点赞功能-定时持久化到数据库-Java程序整合pipeline+lua_哔哩哔哩_bilibili https://www.bilibili.com/video/BV1Lg4y1w7U9 代码: blogLike_schedule/like08 · xin麒/XinQiUtilsOrDemo - 码云 - 开源中国 (gitee.com) https://gitee.com/flowers-bloom-is-the-sea/XinQiUtilsOrDemo/tree/master/blogLike_schedule/like08 数据库表:

    2024年02月13日
    浏览(32)
  • springboot+redis+mysql+quartz-通过Java操作jedis使用pipeline获取缓存数据定时更新数据库

    代码讲解:6-点赞功能-定时持久化到数据库-pipeline+lua-优化pipeline_哔哩哔哩_bilibili https://www.bilibili.com/video/BV1yP411C7dr 代码: blogLike_schedule/like06 · xin麒/XinQiUtilsOrDemo - 码云 - 开源中国 (gitee.com) https://gitee.com/flowers-bloom-is-the-sea/XinQiUtilsOrDemo/tree/master/blogLike_schedule/like06 数据库表的

    2024年02月16日
    浏览(33)
  • springboot+redis+mysql+quartz-通过Java操作jedis定时使用lua脚本获取缓存数据并更新数据库

    springboot+redis+mysql+quartz-通过Java操作jedis定时使用lua脚本获取缓存数据并更新数据库 代码讲解:7.1点赞功能-定时持久化到数据库-Java整合lua_哔哩哔哩_bilibili https://www.bilibili.com/video/BV1ZX4y1H7JT/ 代码: blogLike_schedule/like07 · xin麒/XinQiUtilsOrDemo - 码云 - 开源中国 (gitee.com) https://gitee

    2024年02月13日
    浏览(37)
  • Redis缓存数据库

    目录 一、概述 1、Redis  2、Redis的安装 Redis Windows环境设置 3、String: 字符串 3.1、字符串 3.2、数值 3.3、bitmap 4、Hash: 散列 5、List: 列表 6、Set: 集合 7、Sorted Set: 有序集合 常识: 磁盘:1.寻址:ms(毫秒)2.带宽:MB/s 内存:1.寻址:ns    (纳秒) 2.带宽:GB/s 秒--毫秒--微妙--纳秒

    2024年02月04日
    浏览(43)
  • redis实战-缓存数据&解决缓存与数据库数据一致性

    缓存( Cache),就是数据交换的 缓冲区 ,俗称的缓存就是 缓冲区内的数据 ,一般从数据库中获取,存储于本地代码。防止过高的数据访问猛冲系统,导致其操作线程无法及时处理信息而瘫痪,这在实际开发中对企业讲,对产品口碑,用户评价都是致命的;所以企业非常重视缓存技术,

    2024年02月12日
    浏览(40)
  • Redis缓存数据库(四)

    目录 一、概述 1、Redis Sentinel 1.1、docker配置Redis Sentinel环境 2、Redis存储方案 2.1、哈希链 2.2、哈希环 3、Redis分区(Partitioning)  4、Redis面试题 Redis Sentinel为Redis提供了 高可用解决方案 。实际上这意味着使用Sentinel可以部署一套Redis, 在没有人为干预的情况下去应付各种各样的失

    2024年02月05日
    浏览(42)
  • 缓存与数据库双写一致性几种策略分析

    作者:京东零售 于泷 在高并发场景中,为防止大量请求直接访问数据库,缓解数据库压力,常用的方式一般会增加缓存层起到缓冲作用,减少数据库压力。引入缓存,就会涉及到缓存与数据库中数据如何保持一致性问题,本文将对几种缓存与数据库保证数据一致性的使用方

    2023年04月19日
    浏览(40)
  • redis数据库缓存服务器

    redis比mysql访问数据快 非关系型数据库以键值对的方式存储数据 作用:加快访问速度,缓解数据库压力 redis最新版本7 特点 丰富的数据结构 list,set,hash等数据结构的存储 支持持久化 支持事务 “一个完整的动作,要么全部执行,要么什么也没有做” 支持主从支持高可用,支持

    2024年02月05日
    浏览(44)
  • Redis缓存更新策略以及常见缓存问题

    缓存就是数据交换的缓冲区(Cache),是存储数据的临时地方,一般读写性能较好,常见缓存: Web应用中缓存有什么作用呢? 降低后端负载 提高读写效率,降低响应时间 缓存的成本: 数据的一致性成本 代码维护成本 运维成本 缓存作用模型: 给一段Redis作为缓存的具体案例代

    2024年02月16日
    浏览(32)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包