python访问redis的问题
程序员文章站
2022-04-16 15:01:31
...
今天在本机上(windows)用python访问redis出错,有两种类型的错误:
如果我配sentinel的方式,则会报 unknown command 'SENTINEL'这样的错误;
如果我配StrictRedis的方式,则会报NOAUTH Authentication required.错误;
如果我配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)
更多python访问redis的问题 相关文章请关注PHP中文网!
上一篇: linux系统如何实现登录与退出
下一篇: 首次安装centos进行一些基本配置
推荐阅读
-
关于memcache的使用(入门级有关问题),memcache已经配置好,怎么才能通过使用它来加快访问速度
-
超链接访问过后hover样式就不出现的问题_html/css_WEB-ITnose
-
python的描述符(descriptor)、装饰器(property)造成的一个无限递归问题分享
-
求大神来解决codeigniter框架里面ajax调用php不允许访问的问题
-
python打包exe文件的问题总结及解决办法
-
python线程中的同步问题
-
Redis未授权访问漏洞的利用
-
解决springmvc不能直接访问 jsp的问题
-
redis队列生成缓存的相关问题
-
关于python查询mysql表的问题