京都大亨键值存储的python客户端

python-kyototycoon-ng的Python项目详细描述


关于

这是京都大亨服务器的全功能python客户端库, 同时支持Python2和3。它包括对 原版图书馆由前坂东郎和斯蒂芬·哈默,还介绍 api行为上的一些差异。

自从京都大亨由其最初的作者发展以来 在2012年左右暂停,我们也在维护一个更新的和准备好的分叉 其中:

https://github.com/carlosefr/kyoto

有关京都大亨服务器的更多信息,请参阅:

http://carlosefr.github.io/kyoto/kyototycoon/doc/

功能

更有效的二进制协议也与 http协议。它提高了up的性能 到6倍,但只有以下操作可用:

  • ^{tt1}$ and ^{tt2}$
  • ^{tt3}$ and ^{tt4}$
  • ^{tt5}$ and ^{tt6}$
  • ^{tt7}$

二进制协议不支持原子操作, 使用时必须使用“atomic=false”。操作 除此之外,还会引发NotImplementedError异常。

有可能有两个Kyototycoon对象打开到同一个 同一应用程序中的服务器,一个使用http,另一个使用http 如果需要,使用二进制协议。

图书馆进行自动打包和拆包(编组) 从/到数据库的值。以下数据 默认情况下,存储格式可用:

  • ^{tt9}$ - Python “pickle” format.
  • ^{tt10}$ - JSON format (compact representation).
  • ^{tt11}$ - Strings (UTF-8).
  • ^{tt12}$ - Binary data.

您还可以使用KT_PACKER_CUSTOM格式 可以指定自己的对象来执行封送处理。这个对象 需要提供以下两种方法:

  • ^{tt14}$ - convert “data” to ^{tt15}$
  • ^{tt16}$ - convert “data” from ^{tt15}$

对除play_script()之外的所有方法执行封送处理, 因为服务器可以在 一次。调用方很可能知道 被调用的脚本返回并必须自己进行封送处理。

复制从机

自0.7.0版以来,此库还包含一个复制从机 上课。这个类提供一个consume()生成器函数 接收并解析来自京都大亨的事务日志条目 主服务器进入字典。

这可以用来构建您自己的自定义复制方案, 喜欢密钥过滤,或者对服务器“set”、“remove”或“clear”做出反应 数据库操作。

请注意,只有显式操作才会创建事务日志事件。 诸如过期时删除密钥之类的隐式操作不起作用。

与客户机库不同,复制从机始终处理 “key”和“value”属性是不透明的二进制数据。

启用memcache的服务器

京都大亨支持memcached协议的一个子集。当 服务器已启用此功能,包括项标志,这些标志存储为 值的最后4个字节。从这个库的0.7.3版开始, 其中包括一个自定义打包程序,可以透明地处理这个 还包括针对以下情况的gzip压缩/解压缩: 例如,一个python应用程序正在向kyoto编写html页面 服务器和http服务器正在使用memcached客户端从中读取数据 图书馆。

示例:

from kyototycoon import KyotoTycoon, KT_PACKER_CUSTOM
from kyototycoon.packers import MemcachePacker

mp = MemcachePacker(gzip_enabled=True, gzip_flag=1)
kt = KyotoTycoon(pack_type=KT_PACKER_CUSTOM, custom_packer=mp)

kt.open("127.0.0.1", 1978)

kt.set("key", "value")
value = kt.get("key")

kt.close()

要在不进行任何额外处理的情况下处理(value, flags)对, 可以使用SimpleMemcachePacker

from kyototycoon import KyotoTycoon, KT_PACKER_CUSTOM
from kyototycoon.packers import SimpleMemcachePacker

smp = SimpleMemcachePacker()
kt = KyotoTycoon(pack_type=KT_PACKER_CUSTOM, custom_packer=smp)

kt.open("127.0.0.1", 1978)

kt.set("key", ("value", 123))
value, flags = kt.get("key")

kt.close()

兼容性

此库仍不在版本1.0中,这意味着API和 行为不能保证在不同版本之间保持一致。

已删除对使用错误对象的支持。如果你需要 出于兼容性的原因,请使用 (包括)第5.5.9版。此版本之后的版本引发异常 所有京都大亨的错误。

安装

您可以从源安装此库的最新版本:

python setup.py build
python setup.py install

或者,您可以安装pypi的最新稳定版本:

pip install python-kyototycoon-ng

作者

基于ulrich mierendorff的代码添加了二进制协议支持。 您可以在以下网址找到原始库:

http://www.ulrichmierendorff.com/software/kyoto_tycoon/python_library.html

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

推荐PyPI第三方库


热门话题
Gson类中的java验证错误   If和elseif之间的java差异?   字典Java8地图。输入比较器   java连接到远程计算机以获得WMI支持   java如何使用改型处理JSON对象中的空值   在Java中使用Comparator时不可编译的源代码   java将Jar添加到JSP的运行时路径   带有随机对象的while循环的java大O时间复杂性   java可以在不考虑参数的情况下模拟方法吗?   java我有一个简单的代码,它不工作。无法修复错误“println”   向eclipse添加Xively java库   java是否可以启用本机代码的缓存?   全局变量如何在Java中的所有类之间共享要使用的语言环境?   Java内存游戏如何翻转单个卡?