摘要:今天在本機上用訪問出錯,有兩種類型的錯誤如果我配的方式,則會報這樣的錯誤如果我配的方式,則會報錯誤一下,明天想辦法解決。。。。實際上應該是把配置改為為機器數,為允許宕掉的機器數。
今天在本機上(windows)用python訪問redis出錯,有兩種類型的錯誤:
如果我配sentinel的方式,則會報 unknown command "SENTINEL"這樣的錯誤;
如果我配StrictRedis的方式,則會報NOAUTH Authentication required.錯誤;
mark一下,明天想辦法解決。。。。
ps:最終發現mongo連接失敗是密碼沒有設置導致(居然是因為把線上配置看成線下配置了。。。。)
對于第一種錯誤,公司最近線上出現問題,正好遇到這樣的錯誤,主要原因是sentinel沒啟動起來;不過這其中的過程有些坑爹,公司有3臺redis sentinel機器,其中的一臺機器宕機以后,另外兩臺機器始終無法選舉出一臺作為主,因為不知道哪位臨時工在做redis配置的時候把選舉機器的配置為3,導致只要宕掉一臺就無法選舉出來。實際上應該是把配置改為n-m, n為機器數,m為允許宕掉的機器數。
附上redis的代碼如下:
import redis import ConfigParser import redis.sentinel class RedisConn: _rp = None def __init__(self): cp = ConfigParser.SafeConfigParser() cp.read("avatar_redis.conf") host = cp.get("redis", "host") port = cp.get("redis", "port") db_name = cp.get("redis", "dbName") pass_word = cp.get("redis", "passWord") self._rp = redis.StrictRedis(host=host, port=port, db=0, password=pass_word) # = redis.ConnectionPool(host=host, port=port, db=0, password="") #sentinel = redis.sentinel.Sentinel([(host, port)], socket_timeout=0.1) #self._rp = sentinel.master_for(db_name, socket_timeout=0.1) #self._rp = redis.Redis(connection_pool=conn_pool) def get_conn(self): return self._rp def set_value(self, key, value): self._rp.set(key, value) def get_value(self, key): return self._rp.get(key)
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/38412.html
摘要:反序列化安全問題一這一段時間使用做開發,使用了存儲,閱讀了源碼,發現在存儲到過程中,利用了模塊進行序列化以及反序列化正好根據該樣例學習一波反序列化相關的安全問題,不足之處請各位表哥指出。 Python 反序列化安全問題(一) 這一段時間使用flask做web開發,使用了redis存儲session,閱讀了flask_session源碼,發現在存儲session到redis過程中,利用了...
摘要:在通常情況下,即使只更新配置中的一個標志,也會導致更新后的配置文件被強制推送至所有服務器,收到更新的服務器可能需要重新載入配置甚至可能還要重啟應用程序服務器。將被包裹函數的一些有用的元數據復制給配置處理器。 上一篇文章:Python--Redis實戰:第五章:使用Redis構建支持程序:第3節:查找IP所屬城市以及國家 隨著我們越來越多地使用Redis以及其他服務,如何存儲各項服務的...
閱讀 1802·2021-11-24 09:39
閱讀 2290·2021-09-30 09:47
閱讀 4144·2021-09-22 15:57
閱讀 1873·2019-08-29 18:36
閱讀 3577·2019-08-29 12:21
閱讀 590·2019-08-29 12:17
閱讀 1263·2019-08-29 11:25
閱讀 724·2019-08-28 18:26