当前位置: 首页 > news >正文

火影bug,未保证短时间数据一致性,拿这个例子讲一下Redis

本文只拿这个游戏的bug来举例Redis,如果有不妥的地方,联系我进行删除

描述:
今天在高速上打火影(有隧道,有时候会卡),发现了个bug,我点了两次-1000的忍玉(大概用了1千七百多忍玉),但是神器等级没有增加,可是忍玉数量减少了,过了几小时后,我再登录,神器等级才看到增加。

原来神器等级58,123(没截图)

后面神器等级59,450

1.问题(查询到假数据)

这里假设用的是MySQL和Redis

1.1 业务流程(将信息放入MQ,先操作数据库,再操作Redis)

假设先对忍玉和神器等级的数据库进行update操作,然后进行忍玉和神器等级缓存(为什么不是更新缓存呢,因为如果我们一直操作数据库,就要一直更新缓存,如果用户不进行查询,那么这些更新缓存的操作就是多余的浪费资源,我们直接删缓存,等用户来查的时候我们再去查一次数据库就好了)

如果一切正常的话,数据库得到更新,缓存得到删除,当用户来查的时候,就拿到了新数据

但是由于我们卡(或其他问题),导致部分进程异常终止,导致没有删缓存的操作,这就导致了我们继续查神器等级的时候,还是拿到了旧数据(Redis存有,直接返回)

2.解决方案

上面是先操作数据库,再操作Redis

由于操作数据库的时间远远大于操作Redis的时间,这就导致在操作数据库的时候出现bug的几率就会增大,所以,我们可以换一下顺序,即 我们先操作Redis,再操作数据库,因为操作Redis的时间很短,这个时间段内出现bug的几率贼低,所以我们删了缓存后,不管数据库是否能正常执行,我们继续查询神奇等级的时候,肯定会比上面那种情况会好,可以拿到新数据。

http://www.xdnf.cn/news/343387.html

相关文章:

  • Android Studio Gradle 中 只显示 Tasks 中没有 build 选项解决办法
  • 【Science Advances】北京邮电大学突破:基于MEMS-超表面的多阶涡旋光束高速切换技术
  • 缓冲区溢出分析
  • Java网络编程:深入剖析UDP数据报的奥秘与实践
  • WordPress插件depicter存在SQL注入漏洞(CVE-2025-2011)
  • Nginx 配置多个监听端口
  • 文件包含漏洞
  • 【JavaEE】TCP/IP协议(模型)
  • 使用ESPHome烧录固件到ESP32-C3并接入HomeAssistant
  • 森林生态学研究深度解析:R语言入门、生物多样性分析、机器学习建模与群落稳定性评估
  • WPF主窗体子窗体关联方法
  • WPF中解决数据绑定不匹配的问题
  • 中继器的作用
  • AI开发跃迁指南(第三章:第四维度2——weaviate cloud、weaviate docker安装配置及使用连接示例)
  • 【计算机网络】用户从输入网址到网页显示,期间发生了什么?
  • Nginx1.26.2安装包编译安装并配置stream模块
  • V型球阀材质性能深度解析:专攻颗粒、料浆与高腐蚀介质的工业利器-耀圣
  • WEB UI自动化测试之Pytest框架学习
  • RedHat磁盘的添加和扩容
  • 计数排序-详解
  • 从新手到高手:jQuery 全面进阶之路
  • 数字电子技术基础(五十六)——JK触发器
  • crawl4ai能替代scrapy等传统爬虫框架吗?
  • windows 部署 Kafka3.x KRaft 模式 不依赖 ZooKeeper
  • FPGA_Verilog实现QSPI驱动,完成FLASH程序固化
  • 学习黑客 MAC 地址深入了解
  • 解决社区录音应用横屏状态下,录音后无法播放的bug
  • 信息学奥赛一本通 1511:【SCOI2011】糖果 | 洛谷 P3275 [SCOI2011] 糖果
  • ProfiNet与CANopen:新能源时代的“语言翻译官”
  • Kotlin与Java企业级开发实战:从零到一掌握最新语法与技术精髓