美文网首页
L001.《redis实战》使用散列存储文章信息_python

L001.《redis实战》使用散列存储文章信息_python

作者: 晴空万里103804 | 来源:发表于2019-07-12 00:07 被阅读0次

        由于在项目中使用redis,用的最多的类型就是字符串(string)和列表(list),而其他的几个类型,如集合(set)、散列(hash)、有序集合(zset)很少使用,鉴于想知道这些类型的使用场景、区别和各自的优缺点,为啥效率高等问题,借这本书来探索一番。而这本书里面使用的语言是python,正好也是我想要学习的另一个语言。在此会对每个章节需要使用的代码都会用代码来实践,对python来说,就是小白一枚,遇到很多奇奇怪怪的问题也是进步的一个方法

思想:

1、定义一个文章类

2、初始化文章类一个实例

3、将实例class转换成json字符串

4、连接redis,将json字符串存放到redis中

Article.py

#! constructor

class Article:

def __init__(self,title,link,poster,time,votes):

self.title = title

self.link = link

self.poster = poster

self.time = time

self.votes = votes

#! 获取redis连接,并向redis中存放散列文章的数据

import redis

import json

from entity.Articleimport *

r = redis.Redis(host='127.0.0.1',port=6379,db=0)

# 初始化一个文章对象,并初始化数据

articleEntity = Article('Go to statement considered harmful','http://goo.gl/kZUSu','user:83271',1331382699.33,528)

# 将对象转换成json

jsonStr = json.dumps(articleEntity,default=lambda obj:obj.__dict__,sort_keys=True)

r.hset('article','article:92617',jsonStr)

在该测试中,会让你装第三方库如redis、json等插件,并且遇到对象转换成json时出现

TypeError: Object of type 'Article' is not JSON serializable

错误原因为该对象不是一个json可序列化。

json.dumps() 将Python中的对象转换为JSON中的字符串对象

是因为默认情况下,dumps()方法不知道如何将Article实例变为一个JSON的{}对象。

通过一种简单的方式,用lambda方式来转换任意一个类对象为JSON形式:

lambda obj: obj.__dict__          会将任意的对象,转换成字典的方式

sort_keys=True                    会按照字典中的键来按照ASCII方式来排序

indent=4                          会按照键值对以间隔4来直观的显示

---------------------

作者:杰瑞26

来源:CSDN

原文:https://blog.csdn.net/jerry_1126/article/details/76409042

版权声明:本文为博主原创文章,转载请附上博文链接!

相关文章

网友评论

      本文标题:L001.《redis实战》使用散列存储文章信息_python

      本文链接:https://www.haomeiwen.com/subject/uqcskctx.html