leakdb是python的一个非常简单和快速的键值存储

LeakDB的Python项目详细描述


为什么?

为了好玩o/

概述

leakdb是python的一个非常简单和快速的键值存储。

所有数据都存储在内存中,持久性由用户定义。 可以为自动刷新定义最大队列大小。

API

>>>fromleakdbimportPersistentQueueStorage>>>leak=PersistentQueueStorage(filename='/tmp/foobar.db')# set the value of a key>>>leak.set('bar',{'foo':'bar'})>>>leak.set('foo',2,key_prefix='bar_')# increment a key>>>leak.incr(key='bar_foo',delta=5)7>>>leak.incr(key='foobar',initial_value=1000)1000# looks up multiple keys>>>leak.get_multi(keys=['bar','foobar']){u'foobar':1000,u'bar':{u'foo':u'bar'}}# ensure changes are sent to disk>>>printleak/tmp/foobar.db12288bytes::3itemsinqueue::3itemsinstoragememory>>>leak.flush(force=True)/tmp/foobar.db12338bytes::0itemsinqueue::3itemsinstoragememory>>>leak.close()

储存

  • default storage::默认存储,实现所有的api操作setset_multiincrdecrget_multidelete
  • queuestorage::对队列使用DefaultStorage。您可以重写QueueStorage.worker_process方法,并在调用flush方法时生成所需的内容。
fromleakdbimportQueueStorageclassMyQueueStorage(QueueStorage):defworker_process(self,item):""" Default action execute by each worker.
            Must return a True statement to remove the item,
            otherwise the worker put the item into the queue.
        """logger.info('process item :: {}'.format(item))returnTrue
  • persistentstorage::使用DefaultStorage,否则每个操作都通过shelve模块存储。
  • persistentqueuestorage::使用QueueStoragePersistentStorage
# see also the API partfromleakdbimportPersistentQueueStoragestorage=PersistentQueueStorage(filename="/tmp/foobar.db",maxsize=1,workers=1)# the queue is auto-flush, each operations check the queue sizestorage.set('foo',1)

待办事项

  • 通过ZeroMQ完成传输层
  • 清除代码
  • 改进单元测试
  • 编写一个cli
  • 对每个存储进行基准测试

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java我能在这个程序中更好地使用内存吗?   为什么我的Java while循环迭代了一半   java IntelliJ IDEA不在构建时复制资源   socket仅在Java TCP服务器输出上检查客户端断开连接   java游戏物理摩擦   java片段onClick调用方法   symja数学分析器中无法识别java Abs[x]   java在使用泛型时创建二进制搜索树类的实例?   java在外键约束表上的添加和删除   语法java表达式的含义,如果有条件   java创建内联对象并作为参数传递   是否有相当于Redis排序集(zset)的Java数据结构   java找不到适合的方法(无参数)   音频文件操作给定字节帧的音量Java   Eclipse4不以JavaWebStart启动   java如何使用org在JSON对象中获取嵌套的键元素。json?   java与Jackson的反序列化:“org.codehaus.Jackson.map.JsonMappingException:无法反序列化[projectname]的实例。”   字符串的Java正则表达式   spring集成上的java检测缺火指令