REDIS实践之请勿踩多进程共用一个实例连接的坑
生活随笔
收集整理的這篇文章主要介紹了
REDIS实践之请勿踩多进程共用一个实例连接的坑
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
最近在做一個主進程fork出多個子進程的項目時候,一開始,想在主進程之前 new redis出一個實例,讓fork出的多個子進程共用這個實例,但是總感覺有哪里不妥!
思來想去,想到這么個例子來證明這么做的可怕性
首先在redis里面建了一個 【1-8,除去4】的集合體
然后在進程里面有加入這么段代碼:
把不為集合成員的4卻返回true ?和 ?為集合成員的【1,2,3,5,6,7,8】卻返回false的情況記錄下來,結果
得出了一堆這樣的錯誤情況記錄,所以說多進程千萬不能共用一個redis實例
總結:
必須每個進程單獨創建redis/mysql連接,其他的存儲客戶端同樣也是如此。原因是如果共用1個連接,那么返回的結果無法保證被哪個進程處理。持有連接的進程理論上都可以對這個連接進行讀寫,這樣數據就發生錯亂了。
所以在多個進程之間,一定不能共用連接
來源:http://blog.csdn.net/hao508506/article/details/53039345
總結
以上是生活随笔為你收集整理的REDIS实践之请勿踩多进程共用一个实例连接的坑的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 硫酸是质子酸吗(什么是质子酸 常见的质子
- 下一篇: 高血压吃什么水果好最有效(高血压吃什么水