今天在使用 Redis 缓存数据的时候,出现了如下错误:
AttributeError: 'str' object has no attribute 'items'
具体错误代码如下:
def article_cache(self):
conn = self._redis.conn_redis()
# 缓存文章,缓存10篇
get_article_list = self._init_recommended.article_cache_main()
if get_article_list:
conn.zadd('inv:crawler_article', json.dumps(get_article_list))
出现错误的原因
上面 get_article_list
返回的是一个列表,这里使用的 Redis 里面的 zadd
,我们知道 zadd()
是将带有给定分值的成员添加到有序集合里面,这里返回的 List 经过 json 反序列化之后变成 string ,显然不行。
解决方案
使用 Redis 里面的 set
,作用是设置存储在给定键中的值。
修改代码如下:
def article_cache(self):
conn = self._redis.conn_redis()
# 缓存文章,缓存10篇
get_article_list = self._init_recommended.article_cache_main()
if get_article_list:
conn.set('inv:crawler_article', json.dumps(get_article_list))
这样就不会报上面的错误了。