跳转到主要内容

asyncio (PEP 3156) Gibson缓存支持

项目描述

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

aiogibson 是一个用于从 gibson 缓存数据库访问的 asyncio (PEP-3156/tulip) 框架的库。

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

代码大量借鉴了优秀的 aioredis 库。 GibsonPoolGibsonConnection,几乎直接复制了 RedisPoolRedisConnection,因此我强烈建议查看 aioredis

文档

http://aiogibson.readthedocs.org/

安装

请确保您已编译并运行了 gibson 服务器。安装 aiogibson 的最简单方法是使用 PyPi 上的软件包

pip install aiogibson

示例

import asyncio
from aiogibson import create_gibson

loop = asyncio.get_event_loop()


@asyncio.coroutine
def go():
    gibson = yield from create_gibson('/tmp/gibson.sock', loop=loop)
    # set value
    yield from gibson.set(b'foo', b'bar', 7)
    yield from gibson.set(b'numfoo', 100, 7)

    # get value
    result = yield from gibson.get(b'foo')
    print(result)

    # set ttl to the value
    yield from gibson.ttl(b'foo', 10)

    # increment given key
    yield from gibson.inc(b'numfoo')

    # decrement given key
    yield from gibson.dec(b'numfoo')

    # lock key from modification
    yield from gibson.lock(b'numfoo')

    # unlock given key
    yield from gibson.unlock(b'numfoo')

    # fetch keys with given prefix
    yield from gibson.keys(b'foo')

    # delete value
    yield from gibson.delete(b'foo')


loop.run_until_complete(go())

底层数据结构 trie 允许我们使用前缀表达式对多个键集进行操作

多命令

import asyncio
from aiogibson import create_gibson

loop = asyncio.get_event_loop()


@asyncio.coroutine
def go():
    gibson = yield from create_gibson('/tmp/gibson.sock', loop=loop)

    # set the value for keys verifying the given prefix
    yield from gibson.mset(b'fo', b'bar', 7)
    yield from gibson.mset(b'numfo', 100, 7)

    # get the values for keys with given prefix
    result = yield from gibson.mget(b'fo')

    # set the TTL for keys verifying the given prefix
    yield from gibson.mttl(b'fo', 10)

    # increment by one keys verifying the given prefix.
    yield from gibson.minc(b'numfo')

    # decrement by one keys verifying the given prefix
    yield from gibson.mdec(b'numfoo')

    # lock keys with prefix from modification
    yield from gibson.mlock(b'fo')

    # unlock keys with given prefix
    yield from gibson.munlock(b'fo')

    # delete keys verifying the given prefix.
    yield from gibson.mdelete(b'fo')

    # return list of keys with given prefix ``fo``
    yield from gibson.keys(b'fo')

    # count items for a given prefi
    info = yield from gibson.stats()


loop.run_until_complete(go())

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

连接池示例

import asyncio
from aiogibson import create_pool

loop = asyncio.get_event_loop()

@asyncio.coroutine
def go():
    pool = yield from create_pool('/tmp/gibson.sock', minsize=5, maxsize=10,
                                  loop=loop)
    # using context manager
    with (yield from pool) as gibson:
        yield from gibson.set('foo', 'bar')
        value = yield from gibson.get('foo')
        print(value)

    # NOTE: experimental feature
    # or without context manager
    yield from pool.set('foo', 'bar')
    resp = yield from pool.get('foo')
    yield from pool.delete('foo')

    pool.clear()

loop.run_until_complete(go())

您还可以获得对 gibson 服务器的简单低级接口

低级命令

import asyncio
from aiogibson import create_gibson

loop = asyncio.get_event_loop()


@asyncio.coroutine
def go():
    gibson = yield from create_connection('/tmp/gibson.sock', loop=loop)

    # set value
    yield from gibson.execute(b'set', b'foo', b'bar', 7)

    # get value
    result = yield from gibson.execute(b'get', b'foo')
    print(result)
    # delete value
    yield from gibson.execute(b'del', b'foo')


loop.run_until_complete(go())

要求

许可

aiogibson 在 MIT 许可下提供。

变更

0.1.3 (2015-02-10)

  • 文档发布于 http://aiogibson.readthedocs.org/

  • 添加了等待关闭的终结器;

  • 提高测试覆盖率至99%;

  • 修复了与已取消的未来的bug;

  • 在mget命令中添加了限制参数;

0.1.2 (2014-10-15)

  • 将Reader接口改为与hiredis相似;

  • 高级接口的大部分方法现在返回Future;

  • 连接池,作为高级连接的即插即用替代品;

  • 添加了更多文档字符串;

0.1.1 (2014-09-06)

  • 改进了协议解析器;

  • 在高级命令中添加了类型检查;

  • 在连接执行命令中添加了对None参数的检查;

0.1.0 (2014-08-17)

  • 初始版本;

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码分布

aiogibson-0.1.3.tar.gz (14.2 kB 查看哈希值)

上传时间 源代码

由以下支持