AttributeError: 'str' object has no attribute 'items'

AttributeError: 'str' object has no attribute 'items'

今天在使用 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))

这样就不会报上面的错误了。