由于在项目中使用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
版权声明:本文为博主原创文章,转载请附上博文链接!