[請益] Redis執行多行寫入問題

軟工

2691

大家好 小弟是軟工菜鳥

目前有個專案的需求是,會在一段程式邏輯中

對資料庫進行多次讀取或寫入,中間牽涉到兩張表以上

因為需要每秒執行這段邏輯至少2次,怕用mysql會影響效能,於是考慮用Redis來做

但有查到Redis執行命令,即使用multi exec也並非原子性

所以假設現在Redis有5行寫入要執行,但是執行到一半伺服器掛掉

會不會導致資料只寫了一半的數據錯誤問題呢?

那這樣的業務情況就表示不適合用Redis了是嗎?

謝謝!

--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.141.18.126 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1690859355.A.382.html
integritywei1樓lua script? 08/01 11:25
quickbym12樓很在意資料的正確性就還是應該用 RDBMS 才對,MySQL 08/01 11:27
quickbym13樓沒那麼廢啦!有做讀寫分離嗎? 08/01 11:27
abccbaandy4樓multi exec不就行了? 你從哪查到非原子性? 08/01 11:28
kyoe5樓try catch?掛掉 rollback? 08/01 11:31
ddoll2886樓雖然伺服器掛掉不是你的問題,但是你要有備案處理 08/01 11:58
underwater7樓redis cluster瞭解一下,並且memory db本來就沒保證 08/01 12:32
ooooooo8樓感覺你要的不是Redis而是queuing system 像是rabbit mq 08/01 13:31
ooooooo9樓或是Kafka 之類的 08/01 13:31
alpe10樓上千TPS再來擔心吧 08/01 13:40
brucetu11樓你的操作具體是什麼內容,系統設計沒有明確規格就沒辦法 08/01 13:45
brucetu12樓給你正確的解法,每一種場景都有他的tradeoff 08/01 13:45
brucetu13樓除非你的操作是mysql server memory cache裝不下的資料, 08/01 13:47
brucetu14樓一定牽涉到實體硬碟讀取加上每秒兩次不間斷而且否則你都 08/01 13:47
brucetu15樓是想太多直接mysql做就好了 08/01 13:47
brucetu16樓真的要計較得話即使是RMDBS都有可能在crash的時候資料沒 08/01 13:51
brucetu17樓有完整寫入硬碟導致你必須手動修復 08/01 13:51
brucetu18樓原子性是存在邏輯層的,在實體世界,任何硬體操作都有可 08/01 13:52
brucetu19樓能因為硬體失敗失去原子性 08/01 13:52
brucetu20樓如果你不考慮硬體失敗,那麼直接用redis persistence to 08/01 13:53
brucetu21樓disk沒有任何問題 08/01 13:53
brucetu22樓因為RMDBS也是幫你塞了一層memory cache在硬碟寫入之前, 08/01 13:54
brucetu23樓寫入之前就當機一樣會出問題 08/01 13:54
worf24樓rdbms有那麼弱嗎 08/01 13:56
brucetu25樓你真的要求資料絕對的完整性那就是用queue把一個操作紀 08/01 13:56
brucetu26樓錄到任何一種載體最簡單就是DB,然後另一支程式根據queue 08/01 13:56
brucetu27樓把一些資料寫到你需要的其他地方,再標示queue中的這個ta 08/01 13:56
brucetu28樓sk已經被正確的寫入到其他位置 08/01 13:56
brucetu29樓然後你可能跟同事或owner討論完就發現你的場景根本不需要 08/01 13:57
brucetu30樓這麼嚴謹,量也沒那麼大,直接mysql一秒跑兩次就結案了, 08/01 13:57
更多請益
[請益] 乙方跳到甲方不適應請益
[請益] 製作薪水網站建議
[請益] 英國 v.s. 日本
[請益] offer選擇 微星or小公司
[請益] 軟體轉職仔 台中or台北 選擇
[請益] 回台灣工作最理想的時機
[請益] 職訓局課程選擇
[請益] 緯育tibame的Java班,期末專題的難度