背景:最近在搭建代理池时有用到 redis
,使用 redis
有序set
类型添加数据时报错,错误提示如下:
Traceback (most recent call last):
File "F:\ProxyPool\proxy_spider.py", line 53, in <module>
spider.run()
File "F:\ProxyPool\proxy_spider.py", line 48, in run
self.process_proxy_spiders()
File "F:\ProxyPool\proxy_spider.py", line 43, in process_proxy_spiders
self.pool.add(proxy)
File "F:\ProxyPool\redis_proxy_pool.py", line 30, in add
return self.db.zadd(settings.PROXIES_REDIS_KEY, proxy, score)
File "C:\Users\Administrator\Envs\fastapi_web\lib\site-packages\redis\client.py", line 2685, in zadd
for pair in iteritems(mapping):
File "C:\Users\Administrator\Envs\fastapi_web\lib\site-packages\redis\_compat.py", line 159, in iteritems
return iter(x.items())
AttributeError: 'str' object has no attribute 'items'
原因:最近 redis
包从 2.10
升级到 3.0
,zadd语法修改
# 之前
zadd(name,key1,value1,key2,value2)
# 现在
zadd(name,{key1:value1,key2:value2})