火影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.pswp.cn/bicheng/80288.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/80288.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/80288.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

KRaft (Kafka 4.0) 集群配置指南(超簡單,脫離 ZooKeeper 集群)還包含了簡化測試指令的腳本!!!

docker-compose方式部署kafka集群 Kafka 4.0 引入了 KRaft 模式(Kafka Raft Metadata Mode),它使 Kafka 集群不再依賴 ZooKeeper 進行元數據管理。KRaft 模式簡化了 Kafka 部署和管理,不需要額外配置 ZooKeeper 服務,…

Admyral - 可擴展的GRC工程自動化平臺

文章目錄 一、關于 Admyral相關鏈接資源關鍵特性 二、安裝系統要求 三、快速開始1、啟動服務 四、核心功能1、自動化即代碼2、AI增強工作流3、雙向同步編輯器4、工作流監控5、企業級基礎設施 五、示例應用六、其他信息許可證遙測說明 一、關于 Admyral Admyral 是一個基于 Pyt…

DDR在PCB布局布線時的注意事項及設計要點

一、布局注意事項 控制器與DDR顆粒的布局 靠近原則:控制器與DDR顆粒應盡量靠近,縮短時鐘(CLK)、地址/控制線(CA)、數據線(DQ/DQS)的走線長度,減少信號延遲差異。 分組隔…

計算機網絡-LDP工作過程詳解

前面我們已經學習了LDP的基礎概念,了解了LDP會話的建立、LDP的標簽控制等知識,今天來整體過一遍LDP的一個工作過程,后面我們再通過實驗深入學習。 一、LDP標簽分發 標簽分發需要基于基礎的路由協議建立LDP會話,激活MPLS和LDP。以…

解構與重構:自動化測試框架的進階認知之旅

目錄 一、自動化測試的介紹 (一)自動化測試的起源與發展 (二)自動化測試的定義與目標 (三)自動化測試的適用場景 二、什么是自動化測試框架 (一)自動化測試框架的定義 &#x…

跑不出的循環 | LoveySelf 系列定位

最近開始陷入一輪一輪的循環狀態,無奈,只能自我整理一下。23年暑假,在計算機系折騰了一年后,重新打開博客,回想在數學系摸索博客寫作的日子,思緒涌上心頭,我們決定拾起這份力量。當時覺得 hexo …

Redis最新入門教程

文章目錄 Redis最新入門教程1.安裝Redis2.連接Redis3.Redis環境變量配置4.入門Redis4.1 Redis的數據結構4.2 Redis的Key4.3 Redis-String4.4 Redis-Hash4.5 Redis-List4.6 Redis-Set4.7 Redis-Zset 5.在Java中使用Redis6.緩存雪崩、擊穿、穿透6.1 緩存雪崩6.2 緩沖擊穿6.3 緩沖…

一文讀懂Python之requests模塊(36)

一、requests模塊簡介 requests模塊是python中原生的一款基于網絡請求的模塊,功能強大,簡單便捷且高效 ,該模塊可以模擬瀏覽器發送請求,主要包括指定url、發起請求、獲取響應數據和持久化存儲,包括 GET、POST、PUT、…

WPF之布局流程

文章目錄 1. 概述2. 布局元素的邊界框3. 布局系統原理3.1 布局流程時序圖 4. 測量階段(Measure Phase)4.1 測量過程4.2 MeasureOverride方法 5. 排列階段(Arrange Phase)5.1 排列過程5.2 ArrangeOverride方法 6. 渲染階段(Render Phase)7. 布局事件7.1 主要布局事件7.2 布局事件…

uniapp|獲取當前用戶定位、與系統設定位置計算相隔米數、實現打卡簽到(可自定義設定位置、位置有效范圍米數)

基于UniApp闡述移動應用開發中定位功能的實現全流程,涵蓋實時定位獲取、動態距離計算與自定義位置、有效范圍設定等功能。文章提供完整的代碼示例與適配方案,適用于社交簽到、課堂教室打卡等場景。 目錄 引言定位功能在移動應用中的價值(社交、導航、O2O等場景)UniApp跨平臺…

Yii2.0 模型規則(rules)詳解

一、基本語法結構 public function rules() {return [// 規則1[[attribute1, attribute2], validator, options > value, ...],// 規則2[attribute, validator, options > value, ...],// 規則3...]; }二、規則類型分類 1、核心驗證器(內置驗證器&#xff0…

數據結構(三)——棧和隊列

一、棧和隊列的定義和特點 棧:受約束的線性表,只允許棧頂元素入棧和出棧 對棧來說,表尾端稱為棧頂,表頭端稱為棧底,不含元素的空表稱為空棧 先進后出,后進先出 隊列:受約束的線性表&#xff0…

SQL Server 存儲過程開發三層結構規范

以下是《SQL Server 存儲過程開發三層結構規范》的正式文檔結構,適用于企業級數據庫應用開發場景,有助于團隊協作、代碼審查與自動化運維: 📘 SQL Server 存儲過程開發三層結構規范 一、架構設計總覽 三層結構簡介 層級命名約定…

接上篇,解決FramePack啟動報錯:“httpx.ReadError: [WinError 10054] 遠程主機強迫關閉了一個現有的連接。“的問題

#工作記錄 FramePack部署(從PyCharm解釋器創建和使用開始)保姆級教程-CSDN博客 上篇我們記錄到FramePack從克隆到啟動調試的保姆級教程,關于啟動時會報以下錯誤的問題,已作出解決: 報錯摘錄: (.venv) PS F…

ping_test_parallel.sh 并行網絡掃描腳本

并行網絡掃描腳本分析:提高網絡探測效率 引言腳本概述核心代碼分析顏色定義與初始化并行處理機制并行執行與進程控制結果處理與統計 技術亮點性能分析結論附錄:完整腳本 引言 在網絡管理和運維過程中,快速檢測網段內主機的在線狀態是一項常見…

leetcode 3342. 到達最后一個房間的最少時間 II 中等

有一個地窖,地窖中有 n x m 個房間,它們呈網格狀排布。 給你一個大小為 n x m 的二維數組 moveTime ,其中 moveTime[i][j] 表示在這個時刻 以后 你才可以 開始 往這個房間 移動 。你在時刻 t 0 時從房間 (0, 0) 出發,每次可以移…

關于vue-office在vue3工程中的引用報錯問題

在vue3項目工程中,根據vue-office文檔在vue2中的引用: //引入VueOfficeDocx組件 相關樣式import VueOfficeDocx from vue-office/docx;import vue-office/docx/lib/index.css; 報錯信息: [plugin:vite:import-analysis] Failed to resolve …

【macOS常用快捷鍵】

以下是 macOS 最常用快捷鍵列表,按使用頻率由高到低分類整理,涵蓋日常操作、效率工具及系統控制,助你快速提升使用效率: 一、基礎高頻操作 快捷鍵功能說明Command C復制選中內容Command V粘貼Command X剪切Command Z撤銷上一…

mdadm 報錯: buffer overflow detected

最近跑 blktest (https://github.com/osandov/blktests) 時發現 md/001 的測試失敗了 單獨執行,最后定位到是 mdadm 命令報錯: buffer overflow detected 這個 bug 目前已經修復: https://git.kernel.org/pub/scm/utils/mdadm/mdadm.git/commit/?id827e1870f3205…

查看jdk是否安裝并且配置成功?(Android studio安裝前的準備)

WinR輸入cmd打開命令提示窗口 輸入命令 java -version 回車顯示如下: