python訪問redis的問題

來源:互聯網
上載者:User
今天在本機上(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 redisimport ConfigParserimport redis.sentinelclass 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)
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.