提升(PEP 3156)Gibson缓存支持

aiogibson的Python项目详细描述


|Build status||Coverage||Latest PyPI version||Number of PyPI downloads||License|

aiogibson是用于访问gibson缓存数据库的库 来自asyncio(pep-3156/tulip)框架。

gibson是一个高效的基于树的内存缓存服务器。 它使用特殊的trie结构,允许 用户使用前缀对多个密钥集执行操作 在最坏的情况下达到相同性能等级的表达式, 一般情况下甚至比常规缓存实现更好 基于哈希表。

从awesomeaioredis库中大量重用的代码。GibsonPoolGibsonConnection,几乎是RedisPoolRedisConnection,所以我强烈建议签出aioredis

安装

确保已编译并运行gibson服务器。最简单的方法 安装aiogibson是通过使用pypi上的包:

pip install aiogibson

示例

importasynciofromaiogibsonimportcreate_gibsonloop=asyncio.get_event_loop()@asyncio.coroutinedefgo():gibson=yield fromcreate_gibson('/tmp/gibson.sock',loop=loop)# set valueyield fromgibson.set(b'foo',b'bar',7)yield fromgibson.set(b'numfoo',100,7)# get valueresult=yield fromgibson.get(b'foo')print(result)# set ttl to the valueyield fromgibson.ttl(b'foo',10)# increment given keyyield fromgibson.inc(b'numfoo')# decrement given keyyield fromgibson.dec(b'numfoo')# lock key from modificationyield fromgibson.lock(b'numfoo')# unlock given keyyield fromgibson.unlock(b'numfoo')# fetch keys with given prefixyield fromgibson.keys(b'foo')# delete valueyield fromgibson.delete(b'foo')loop.run_until_complete(go())

底层数据结构trie允许我们对多个 使用前缀表达式的密钥集:

多命令

importasynciofromaiogibsonimportcreate_gibsonloop=asyncio.get_event_loop()@asyncio.coroutinedefgo():gibson=yield fromcreate_gibson('/tmp/gibson.sock',loop=loop)# set the value for keys verifying the given prefixyield fromgibson.mset(b'fo',b'bar',7)yield fromgibson.mset(b'numfo',100,7)# get the values for keys with given prefixresult=yield fromgibson.mget(b'fo')# set the TTL for keys verifying the given prefixyield fromgibson.mttl(b'fo',10)# increment by one keys verifying the given prefix.yield fromgibson.minc(b'numfo')# decrement by one keys verifying the given prefixyield fromgibson.mdec(b'numfoo')# lock keys with prefix from modificationyield fromgibson.mlock(b'fo')# unlock keys with given prefixyield fromgibson.munlock(b'fo')# delete keys verifying the given prefix.yield fromgibson.mdelete(b'fo')# return list of keys with given prefix ``fo``yield fromgibson.keys(b'fo')# count items for a given prefiinfo=yield fromgibson.stats()loop.run_until_complete(go())

aiogibson使用上下文管理器支持连接池:

连接池示例

importasynciofromaiogibsonimportcreate_poolloop=asyncio.get_event_loop()@asyncio.coroutinedefgo():pool=yield fromcreate_pool('/tmp/gibson.sock',minsize=5,maxsize=10,loop=loop)# using context managerwith(yield frompool)asgibson:yield fromgibson.set('foo','bar')value=yield fromgibson.get('foo')print(value)# NOTE: experimental feature# or without context manageryield frompool.set('foo','bar')resp=yield frompool.get('foo')yield frompool.delete('foo')pool.clear()loop.run_until_complete(go())

此外,您还可以拥有到gibson服务器的简单低级接口:

低级命令

importasynciofromaiogibsonimportcreate_gibsonloop=asyncio.get_event_loop()@asyncio.coroutinedefgo():gibson=yield fromcreate_connection('/tmp/gibson.sock',loop=loop)# set valueyield fromgibson.execute(b'set',b'foo',b'bar',7)# get valueresult=yield fromgibson.execute(b'get',b'foo')print(result)# delete valueyield fromgibson.execute(b'del',b'foo')loop.run_until_complete(go())

要求

许可证

aiogibson是在mit许可下提供的。

更改

0.1.3(2015-02-10)

  • 文档发布于http://aiogibson.readthedocs.org/
  • 添加了等待关闭的终结器;
  • 测试覆盖率提高到99%;
  • 修正了未来取消的错误;
  • 向mget命令添加了限制参数;

0.1.2(2014-10-15)

  • 已将读卡器界面更改为类似于Hiredis;
  • 来自高级接口的大多数方法现在返回future;
  • 连接池,用作高级连接的替代插件;
  • 添加了更多docstrings;

0.1.1(2014-09-06)

  • 改进的协议分析器;
  • 在高级命令中添加了类型检查;
  • 在connection execute命令中添加了对none参数的检查;

0.1.0(2014-08-17)

  • 初始版本;

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

推荐PyPI第三方库


热门话题
java使用双一元运算符vs函数<Double,Double>   由于存在巨大的休眠,超出了java GC开销限制   java更改Tomcat中Apache文件上载的临时目录   当PDF位于本地驱动器时,javascript无法在IE中显示PDF   java hibernate如何加载瞬态对象?   java如何判断包属于哪个模块?   创建Word文档时java文件已损坏   java如何将Eclipse中的每个开放项目导出为自己的JAR?   java将带有getter和setter的变量添加到现有类中   java高效地发送多封电子邮件   java读/写。具有特殊字符的txt文件   java如何在导出到jar时包含opencv本机库   java Xstream在未完成时停止写入文件   if语句Java:无法检查布尔值是否为null   文本Java:读取txt文件并将其保存在字符串数组中,但不带反斜杠(空格)?   java如何使用正则表达式替换字符串的一部分   通过Java远程运行Powershell脚本   filenames带有xml文件空指针异常的Java文件uri