首頁 > 後端開發 > Python教學 > python訪問redis的問題

python訪問redis的問題

高洛峰
發布: 2017-02-15 14:59:14
原創
1757 人瀏覽過

今天在本機上(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的代碼如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

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)

登入後複製

更多python訪問redis的問題 相關文章請關注PHP中文網!


相關標籤:
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
python - ubuntu16.04 lxml的報錯
來自於 1970-01-01 08:00:00
0
0
0
有辦法在PHP裡寫Python嗎?
來自於 1970-01-01 08:00:00
0
0
0
python scrapy爬蟲錯誤
來自於 1970-01-01 08:00:00
0
0
0
python相關問題求解決,有償
來自於 1970-01-01 08:00:00
0
0
0
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板