在python中通过redis hset存储字典时,必须主动把字典通过json.dumps()序列化为字符串后再存储,
不然hget获取后将无法通过json.loads()反序列化为字典
序列化存储
1
2
3
4
|
r = redis_conn() r.hset( 'wait_task' , 'one' , json.dumps({ 'project' : 'india' , 'total_size' : '15.8 MB' })) r.hset( 'wait_task' , 'two' , json.dumps({ 'project' : 'india' , 'total_size' : '15.8 MB' })) r.hset( 'wait_task' , 'three' , json.dumps({ 'project' : 'india' , 'total_size' : '15.8 MB' })) |
反序列化读取
1
2
3
|
for k in r.hkeys( 'wait_task' ): d = r.hget( 'wait_task' , k) print (json.loads(d)) |
输出
1
2
3
|
{ 'project' : 'india' , 'total_size' : '15.8 MB' } { 'project' : 'india' , 'total_size' : '15.8 MB' } { 'project' : 'india' , 'total_size' : '15.8 MB' } |
补充知识:python redis 存string 取 string
看代码吧~
1
2
3
4
5
6
7
|
DB_REDIS = { 'host' : localhost, 'port' : 6379 , 'password' : 'pwd&&1' , 'db' : 1 , 'decode_responses' : True } |
python3使用时,给客户端配置'decode_responses': True
就能保证存取的都是string,而不是想存string,结果却是bytes!!!
以上这篇python redis存入字典序列化存储教程就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。
原文链接:https://www.cnblogs.com/chengd/p/9836605.html