以前參與的一個項目出現了這麼一個問題:mysql
設備硬件上傳了數據到數據中心,可是數據寫入了mysql數據庫,可是redis中查不到對應的值,理論上兩個庫都應該寫的,負責那個項目的同事覺得是redis出bug了沒有存入數據,我我的以爲是數據有問題,以此爲依據進行了排查。。redis
過程就不說了。。坑的一逼。。沒什麼用。。。sql
通過一小時的數據排查,發現做爲主鍵的設備惟一編碼,"ABCDEFG"這個東西,後面居然多了一個空格,變成了"ABCDEFG空格",可是在redis查詢的時候,同事並無用命令行進行嚴格的查詢,只是複製了ABCDEFG空格(不加引號)這個內容直接在命令行上查詢,致使一直覺得數據沒有寫進去,其實redis已經將數據寫到了"ABCDEFG空格"這個key中,最後使用hgetall "ABCDEFG空格"就將數據查詢了出來,最後肯定爲錄入設備編號時用戶手賤多打了一個空格。數據庫
在這個意外的bug中,第一點問題就是系統在錄入時沒有作好參數過濾,在用戶誤輸入空格時沒有進行處理,這是最主要的問題,第二就是在進行命令行查詢時,必定要使用嚴謹的查詢方式,特別是字符串查詢,必定要保證字符串格式正確,不要偷懶編碼