博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python访问redis的问题
阅读量:6334 次
发布时间:2019-06-22

本文共 1319 字,大约阅读时间需要 4 分钟。

今天在本机上(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)

转载地址:http://lgioa.baihongyu.com/

你可能感兴趣的文章
【算法】论平衡二叉树(AVL)的正确种植方法
查看>>
基于DDD的现代ASP.NET开发框架--ABP系列之1、ABP总体介绍
查看>>
react 从零开始搭建开发环境
查看>>
scala recursive value x$5 needs type
查看>>
ps -ef |grep 输出的具体含义
查看>>
markdown编辑
查看>>
ASCII 在线转换器
查看>>
Linux内核同步:RCU
查看>>
Android逆向进阶——让你自由自在脱壳的热身运动(dex篇)
查看>>
Java设计模式之五大创建型模式(附实例和详解)
查看>>
60 Permutation Sequence
查看>>
主流的RPC框架有哪些
查看>>
Hive学习之路 (七)Hive的DDL操作
查看>>
[转]mysql使用关键字作为列名的处理方式
查看>>
awesome go library 库,推荐使用的golang库
查看>>
树形展示形式的论坛
查看>>
jdbcTemplate 调用存储过程。 入参 array 返回 cursor
查看>>
C++中的stack类、QT中的QStack类
查看>>
Linux常用基本命令[cp]
查看>>
CSS 相对|绝对(relative/absolute)定位系列(一)
查看>>