京都大亨键值存储的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