reids 有序结合zadd出错:AttributeError: ‘int’ object has no attribute ‘items’
redis zadd函数
增加一个或多个元素,如果该元素已经存在,更新它的socre值虽然有序集合有序,但它也是集合,不能重复元素,添加重复元素只会更新原有元素的score值
错误
具体错误详情代码
// An highlighted block
def add(self, proxy, score=INITIAL_SCORE):
"""
添加代理,设置分数为最高
:param proxy: 代理
:param score: 分数
:return: 添加结果
"""
if not self.db.zscore(REDIS_KEY, proxy):
return self.db.zadd(REDIS_KEY,score,proxy)
解决方法:
因为函数zadd源码中第二各参数为可迭代对象,而这里的score和proxy都不是一个可迭代对象,因而出错,只需把代码改成如下:
def add(self, proxy, score=INITIAL_SCORE):
"""
添加代理,设置分数为最高
:param proxy: 代理
:param score: 分数
:return: 添加结果
"""
if not self.db.zscore(REDIS_KEY, proxy):
mapping = {
proxy:score,
}
return self.db.zadd(REDIS_KEY,mapping)