摘要:今天在本机上用访问出错,有两种类型的错误如果我配的方式,则会报这样的错误如果我配的方式,则会报错误一下,明天想办法解决。。。。实际上应该是把配置改为为机器数,为允许宕掉的机器数。
今天在本机上(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)
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/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