python和redis实现对象持久化
来源:互联网 发布:java打印乘法口诀表 编辑:程序博客网 时间:2024/06/14 00:10
喜欢哪里学哪里学习方式太随性,所以,知识只能一点一点积累了吧
下午的时候突然想试试序列化和持久化对象,序列化有什么趣啊一遍一遍一遍的问!想来是被之前的面试虐多了有自虐的倾向
所谓序列化嘛,就是为了保存内存中的数据结构的,还有别的意义么
随手搜了一下,各种版本的文章也是不少,最后还是实践了这篇 序列化Python对象 - 深入Python 3
序列化的过程分成两部分,第一部分是序列化+存储,第二部分是反序列化+恢复对象过程
存储对象过程
nyandeMacBook-Pro:~ nyan$ pythonPython 3.4.2 (v3.4.2:ab2c023a9432, Oct 5 2014, 20:42:22) [GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwinType "help", "copyright", "credits" or "license" for more information.>>> entry = {}>>> entry['title'] = 'local pickle'>>> entry['id'] = b'\xB6\xAD\xC5\xF4'>>> entry['time_limit'] = None>>> import pickle<p class="p1"><span class="s1">>>> with open('entry.pickle', 'wb') as f:</span></p><p class="p1"><span class="s1">... <span></span>pickle.dump(entry, f)</span></p><p class="p1"><span class="s1">... >>></span></p>
至此,序列化过程结束,然后在终端当前的文件夹创建了entry.pickle文件
恢复对象过程
nyandeMacBook-Pro:~ nyan$ pythonPython 3.4.2 (v3.4.2:ab2c023a9432, Oct 5 2014, 20:42:22) [GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwinType "help", "copyright", "credits" or "license" for more information.>>> import pickle>>> with open('entry.pickle', 'rb') as f:... entry = pickle.load(f)... >>> entry{'title': 'local pickle', 'id': b'\xb6\xad\xc5\xf4', 'time_limit': None}
既然文件已经存储过了,没必要像原文那样分成两个终端来测试
测试结果表明可以将序列化的对象恢复
</pre><pre name="code" class="python">Functions: dump(object, file) dumps(object) -> string load(file) -> object loads(string) -> object
dumps和loads方法可以轻松解决文件的问题,下面是测试
>>> str = pickle.dumps(entry)>>> print(str)b'\x80\x03}q\x00(X\x02\x00\x00\x00idq\x01C\x04\xb6\xad\xc5\xf4q\x02X\x05\x00\x00\x00titleq\x03X\x0c\x00\x00\x00local pickleq\x04X\n\x00\x00\x00time_limitq\x05Nu.'>>> ent = pickle.loads(str)>>> ent{'id': b'\xb6\xad\xc5\xf4', 'title': 'local pickle', 'time_limit': None}
避开文件的持久化和恢复已经解决,然后就是跟redis的结合,继续之前的实验
>>> import redis>>> r = redis.Redis('127.0.0.1', '6379', '0')>>> r.set('entrystr', str )True>>> r.get('entrystr')b'\x80\x03}q\x00(X\x02\x00\x00\x00idq\x01C\x04\xb6\xad\xc5\xf4q\x02X\x05\x00\x00\x00titleq\x03X\x0c\x00\x00\x00local pickleq\x04X\n\x00\x00\x00time_limitq\x05Nu.'>>>
如此,python和redis的对象持久化过程完成
0 0
- python和redis实现对象持久化
- redis实现持久化
- Redis如何实现持久化
- redis持久化实现原理
- redis持久化和同步
- 【Redis】事务和持久化
- redis持久化和常见故障
- Redis持久化和复制
- 使用MFC::CArchive实现对象的持久化和反持久化
- 如何实现Redis 的持久化
- Redis的AOF持久化的实现
- 【redis】redis 持久化
- 【redis】redis持久化
- redis---Redis持久化
- Redis中的RDB持久化和AOF持久化(一)
- Redis之二:RDB持久化和AOF持久化
- Dal:基于Mongodb和redis的Python持久库
- Redis持久化 Snapshot和AOF说明
- 数据库表结构
- CSS基本功先生——选择器
- Cocos2d-x 3.2 lua飞机大战开发实例(一)背景地图,飞机,子弹的封装,以及lua中定时器的使用
- OpenCV学习笔记(一)——旋转向量与旋转矩阵相互转化
- Java NIO系列教程(八) SocketChannel
- python和redis实现对象持久化
- 简单的ssh安全设置
- Linux文件系统十问,你知道吗?
- Order&Shipping Transactions Status Summary
- 时间转换位时间戳
- Cocos2d-x 3.2 lua飞机大战开发实例(二)敌机类的封装,以及碰撞检测的实现
- 《Java虚拟机原理图解》 1.2.2、Class文件中的常量池详解(上)--转载收藏
- synchronized使用说明
- 改变Apache端口等配置修改方法