浅谈python处理json和redis hash的坑


Posted in Python onJuly 16, 2020

1、使用MySQLdb读取出来的数据是unicode字符串,如果要写入redis的hash中会变成

"{u'eth0_outFlow': 2.5, u'eth1_inFlow': 3.44}"

无法使用json.loads,需要提前将unicode转成str:

str(eth0_outFlow)

2、单引号包围的key不是规范的json格式

"{'eth0_outFlow': 2.5, 'eth1_inFlow': 3.44}"

需要转成规范的格式才能使用json.loads()

replace('\'', '"') => '{"eth0_outFlow": 2.5, "eth1_inFlow": 3.44}'

3、None写入redis的hash是直接变成 'None',需要转成'null' 才能使用 json.loads()

"{'eth0_outFlow': None, 'eth1_inFlow': None}"

replace('\'', '"').replace("None", "null") => '{"eth0_outFlow": null, "eth1_inFlow": null}'

4、json.loads()会把key的类型从str转成unicode,之后写进redis后就变成了

"{u'eth0_outFlow': None, u'eth1_inFlow': None}"

需要将其转成str的key才能写进redis

value = json.loads(cache)
items = value.iteritems()
value = {k.encode('utf8'): v for k, v in items}
redisCli.hmset(key, value)

5、json.loads如果要保持字典的顺序则可以使用

from collections import OrderedDict

json.loads(data, object_pairs_hook=OrderedDict)

6、json.dumps中文乱码解决方法

>>> js = json.loads('{"haha": "哈哈"}') 
>>> print json.dumps(js)
{"haha": "\u54c8\u54c8"}
>>> print json.dumps(js, ensure_ascii=False) 
{"haha": "哈哈"}

7、解码出错,使用json.loads会报错 'utf8' codec can't decode byte ...则使用忽略错误的方法

json.loads(unicode( str, errors='ignore'))

8、redis hash在存入redis后所有key都会变成字符串

9、使用redis的时候尽量减少网络IO操作,有时候可以使用hash代替 key-value字符串,会得到事半功倍的效果

10、redis最大内存 maxmemory达到设置的最大值时会随机删除设置了expire时间的key,这个让我调试了几个钟

补充知识:redis的hash与string区别

Redis hash 是一个 string 类型的 field 和 value 的 映射表。它的添加、删除操作都是 0(1)(平均操作)。

hash 特别 适合用于存储对象。相较于将对象的每个字段存成单个 string 类型(string 类型可以存储对象序列化)。

将一个对象存储在 hash 类型中会占用更少的内存,并且可以更方便的存取整个对象。

(省内存的原因是新建一个 hash 对象时开始是用 zipmap(又称为 small hash)来存储的。

这个 zipmap 其实并不是 hash table,但是 zipmap 相比正常的 hash 实现可以节省不少 hash 本身需要的一些元数据存储开销。

对比软件:Beyond Compare 3

以上这篇浅谈python处理json和redis hash的坑就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python抓取京东图书评论数据
Aug 31 Python
Python爬虫之xlml解析库(全面了解)
Aug 08 Python
Python实现购物车功能的方法分析
Nov 10 Python
详解K-means算法在Python中的实现
Dec 05 Python
django 多数据库配置教程
May 30 Python
python 读取txt,json和hdf5文件的实例
Jun 05 Python
在Python中使用gRPC的方法示例
Aug 08 Python
对Python Class之间函数的调用关系详解
Jan 23 Python
python 读取dicom文件,生成info.txt和raw文件的方法
Jan 24 Python
python 正则表达式参数替换实例详解
Jan 17 Python
python global和nonlocal用法解析
Feb 03 Python
Django后端按照日期查询的方法教程
Feb 28 Python
Python requests及aiohttp速度对比代码实例
Jul 16 #Python
Python3 搭建Qt5 环境的方法示例
Jul 16 #Python
python3实现将json对象存入Redis以及数据的导入导出
Jul 16 #Python
Python必须了解的35个关键词
Jul 16 #Python
Python子进程subpocess原理及用法解析
Jul 16 #Python
python redis存入字典序列化存储教程
Jul 16 #Python
Python是怎样处理json模块的
Jul 16 #Python
You might like
PHP实现阳历到农历转换的类实例
2015/03/07 PHP
Zend Framework入门之环境配置及第一个Hello World示例(附demo源码下载)
2016/03/21 PHP
PHP实现微信模拟登陆并给用户发送消息的方法【文字,图片,图文】
2017/06/29 PHP
页面版文本框智能提示JS代码
2009/11/20 Javascript
jQuery.Autocomplete实现自动完成功能(详解)
2010/07/13 Javascript
在Ajax中使用Flash实现跨域数据读取的实现方法
2010/12/02 Javascript
JS 获取select(多选下拉)中所选值的示例代码
2013/08/02 Javascript
单元选择合并变色示例代码
2014/05/26 Javascript
JavaScript中的时间处理小结
2016/02/24 Javascript
jQuery实现智能判断固定导航条或侧边栏的方法
2016/09/04 Javascript
jQ处理xml文件和xml字符串的方法(详解)
2016/11/22 Javascript
基于Bootstrap table组件实现多层表头的实例代码
2017/09/07 Javascript
jquery+ajaxform+springboot控件实现数据更新功能
2018/01/22 jQuery
vue-star评星组件开发实例
2018/03/01 Javascript
Node.js JSON模块用法实例分析
2019/01/04 Javascript
浅谈Express.js解析Post数据类型的正确姿势
2019/05/30 Javascript
layui的数据表格+springmvc实现搜索功能的例子
2019/09/28 Javascript
[01:31:02]TNC vs VG 2019国际邀请赛淘汰赛 胜者组赛BO3 第一场
2019/08/22 DOTA
Python基于tkinter模块实现的改名小工具示例
2017/07/27 Python
pandas数值计算与排序方法
2018/04/12 Python
Python cookbook(字符串与文本)在字符串的开头或结尾处进行文本匹配操作
2018/04/20 Python
python开启摄像头以及深度学习实现目标检测方法
2018/08/03 Python
python实现输入任意一个大写字母生成金字塔的示例
2019/10/27 Python
python GUI库图形界面开发之PyQt5下拉列表框控件QComboBox详细使用方法与实例
2020/02/27 Python
Python内置函数locals和globals对比
2020/04/28 Python
Python logging模块原理解析及应用
2020/08/13 Python
CSS3中利用animation属性创建雪花飘落特效
2014/05/14 HTML / CSS
让IE下支持Html5的placeholder属性的插件
2014/09/02 HTML / CSS
全球最大的生存食品、水和装备专用在线市场:BePrepared.com
2020/01/02 全球购物
大学毕业后的十年规划
2014/01/07 职场文书
会计专业自荐信
2014/06/03 职场文书
青年文明号口号
2014/06/17 职场文书
2014年教师党员自我评议
2014/09/19 职场文书
2015年乡镇财政工作总结
2015/05/19 职场文书
幼儿园国培研修日志
2015/11/13 职场文书
MySQL中JOIN连接的基本用法实例
2022/06/05 MySQL