当前位置: 代码网 > it编程>数据库>Redis > Redis中的延迟双删

Redis中的延迟双删

2024年05月26日 Redis 我要评论
什么是延迟双删?做法:先删除redis,再更新数据库,延迟n秒后再删除一次redis。延迟双删策略是分布式系统中数据库存储和缓存数据保持最终一致性的常用策略,但它不是强一致。其实不管哪种方案,都避免不

什么是延迟双删?

做法:先删除redis,再更新数据库,延迟n秒后再删除一次redis。

延迟双删策略是分布式系统中数据库存储和缓存数据保持最终一致性的常用策略,但它不是强一致。

其实不管哪种方案,都避免不了redis存在脏数据的问题,只能减轻这个问题,要想彻底解决,得要用到同步锁和对应的业务逻辑层面解决。

在更新数据库数据时,需要同步redis中缓存的数据,存在两种方法:

第一种方案

先更新数据库,再删除redis。

存在的问题:当请求1执行完更新数据库操作后,还未来得及删除redis,此时请求2查询到并使用了redis中的旧数据。

第二种方案

先删除redis,再更新数据库。

存在的问题:当请求1执行完删除redis后,还未进行更新数据库操作,此时请求2查询到了数据库的旧数据并写入了redis。

所以需要先删除redis,再更新数据库,延迟n秒后再删除一次redis。

延时双删可能会导致的问题?

在低并发的情况下,可以通过加锁的方式来达成双写一致性。

但是高并发的情况下,删除缓存必然会造成缓存击穿的问题,其实缓存击穿影响不大,因为能解决, 主要是延迟双删的第一次删除可能没什么意义

因为在缓存第一次删除旧数据后,数据库还没有完成更新时,请求到来时直接请求数据库,返回的还是旧数据并添加到了缓存中,相当于又回到了缓存第一次删除之前的状态,都是缓存的旧数据。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

  • Redis慢日志的实现示例

    Redis慢日志的实现示例

    slowlog 是用来读取和重置 redis 慢查询日志的命令,redis 2.2.12 版本开始支持1.redis 慢查询日志概述客户端从发送命令到获取返回结... [阅读全文]
  • 一文搞懂Redis中的慢查询日志和监视器

    慢查询添加新日志在每次执行命令的之前和之后,程序都会记录微妙格式的当前unix时间戳,这两个时间戳之间的差就是服务器执行命令所耗费的时长,服务器会将这个时长作为参数之一传给slow…

    2024年05月26日 数据库
  • Redis如何实现计数统计

    介绍计数器大量应用于互联网上大大小小的项目,你可以在很多场景都能找到计数器的应用范畴,单纯以技术派项目为例,也有相当多的地方会有计数相关的诉求,比如文章带赞数收藏数评论数用户粉丝数…

    2024年05月26日 数据库
  • 在Ubuntu 14.04系统上备份和恢复Redis数据详细步骤

    在Ubuntu 14.04系统上备份和恢复Redis数据详细步骤

    简介redis 是一个内存中的键值缓存和存储(也可以是数据库),同时也可以持久化(永久保存)到磁盘上。在本文中,您将了解如何在 ubuntu 14.04 服务器... [阅读全文]
  • redis实现动态字符串SDS

    1、sds简介无论是 redis 的 key 还是 value,其基础数据类型都是字符串。例如,hash 型 value 的 field 与 value 的类型、list 型、se…

    2024年05月26日 数据库
  • Redis节省内存的十个技巧分享

    Redis节省内存的十个技巧分享

    引言你是否在工作中遇到过redis的bigkey导致的内存占用严重、查询耗时大大增加?同时bigkey还可能导致redis实例的崩溃,因为内存不够用了,redi... [阅读全文]

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com