PyKV是用python仿照着redis实现的一个简单的key-value形的数据库,使用zeroMq完成client端和server端的通信,通过python的自省来完成对操作条件的解析,从而支持简单的增删查改。项目地址在这里。
ZMQ
zeroMq是一个为可伸缩的高性能异步消息库。它提供了类似于消息队列的功能,却并不是一个消息队列,工作在socket之上,传统的消息队列之下·。它提供了在传统socket上加了魔改效果有多种常用工作模式的套接字。
相对于原生的socket,zeroMq有以下几个特点:
- 使用简单。
- 支持多种通信模式,比如在本项目中使用的请求响应模式,此外还有在分布式系统中常用的发布/订阅模式。
- 高性能。zeroMq和其他消息队列的性能对比见[这里](http://mikehadlow.blogspot.com/2011/04/message-queue-shootout.html)。
想了解更多关于zeroMq的可以看它的官网,见这里。
使用实例
在客户端建立同server的链接,数据库名称db,建立三个空的query
查询
删除
插入
更新
更多的使用实例后面会更新。
实现
其实实现反而没有什么好说的,跟一开始设想的仿照redis来实现的目标差的有点远。而且也是通过python的getattr自省和重载操作符来实现的条件的解析,算是取巧避开了实现类似于SQL的解析部分,这样大大减轻的程序的包袱。
存储上一开始准备直接存在内存中,后面又在纠结是不是应该改成json好支持持久化,最后干脆两个都支持,将选择权留给配置,这样实现起来也很方便。
没有做性能上的测试,主要还是不是很满意,后面应该会有大的改版,完成之后在做性能测试吧。
既然还要修改的话,就把这篇的名字改成未完待续吧。
Reference
[ZMQ性能测试](http://mikehadlow.blogspot.com/2011/04/message-queue-shootout.html