最近在做乙個主程序fork出多個子程序的專案時候,一開始,想在主程序之前 new redis出乙個例項,讓fork出的多個子程序共用這個例項,但是總感覺有**不妥!
思來想去,想到這麼個例子來證明這麼做的可怕性
首先在redis裡面建了乙個 【1-8,除去4】的集合體
然後在程序裡面有加入這麼段**:
把不為集合成員的4卻返回true 和 為集合成員的【1,2,3,5,6,7,8】卻返回false的情況記錄下來,結果
得出了一堆這樣的錯誤情況記錄,所以說多程序千萬不能共用乙個redis例項
總結:
必須每個程序單獨建立redis/mysql連線,
其他的儲存客戶端同樣也是如此
。原因是如果共用1個連線,那麼返回的結果無法保證被哪個程序處理。持有連線的程序理論上都可以對這個連線進行讀寫,這樣資料就發生錯亂了。
所以在多個程序之間,一定不能共用連線
魂斷實習之 請勿亂吃藥
話說回來,是藥三分毒。昨天白天身體還好好的,而且狀態還特別好,只花了不到乙個小時的時間就寫好的乙個手電筒的android應用程式,測試並且執行成功。下午下班之後,吃了個飯,學校的飯還是便宜啊,同樣是麵條,加個卻只有軟體園那邊加個的一半,飯足囊包之後,有些熱,脫了上衣。晚上10點左右感覺肚子特別脹就去...
redis分布式鎖踩坑實踐
版本一 redis判斷是否有值,沒有加值 導致問題 1 加鎖不是個原子操作2 若加鎖後宕機,系統死鎖 版本二 redis加鎖原子性操作 setnx 鎖加過期時間 導致問題 1 若設定過期時間2s,程式執行3s,釋放了別人的鎖 版本三 redis加鎖上放乙個隨機值,然後判斷隨機值刪除鎖 導致問題 1 ...
redis 集群 踩坑
場景 redis集群三主三從,jedis接入,只配置三個主節點 問題 服務更新部署,發現連不上redis集群.包connection refused.排查 首先確定redis節點是否存在問題,redis cli在當前伺服器沒有安裝,使用telnet ip port進行測試,發現三個節點中部分節點存在...