关于Redis Python 异步 Client

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于Redis Python 异步 Client相关的知识,希望对你有一定的参考价值。

参考技术A 好久没有写文章了,主要原因还是最近工作比较忙,并且也没有什么可以写的。 3但最近确实在研究Redis,因为我们的游戏服会用到Redis,但是Client是一个同步阻塞的Python库 https://github.com/andymccurdy/redis-py 。同时,Redis官方网站推荐的Python Client有几个异步客户端,但要么是Python3.x的版本,要么就是使用其他异步网络库实现的。因此我最终还是希望利用Python的asyncore实现一个异步版本的Redis Client。
目前已经在实现了,进度不是很快,差不多的时候放到Github上。

python使用异步redis--aioredis

安装

最简单的安装方式:

pip install aioredis

需要先安装的依赖:

  1. Python 3.3 and asyncio 或 Python 3.4+
  2. hiredis

例子

simple low-level interface:

import asyncio
import aioredis

loop = asyncio.get_event_loop()

async def go():
    conn = await aioredis.create_connection(
        ('localhost', 6379), loop=loop)
    await conn.execute('set', 'my-key', 'value')
    val = await conn.execute('get', 'my-key')
    print(val)
    conn.close()
    await conn.wait_closed()
loop.run_until_complete(go())
# will print 'value'

simple high-level interface:

import asyncio
import aioredis

loop = asyncio.get_event_loop()

async def go():
    redis = await aioredis.create_redis(
        ('localhost', 6379), loop=loop)
    await redis.set('my-key', 'value')
    val = await redis.get('my-key')
    print(val)
    redis.close()
    await redis.wait_closed()
loop.run_until_complete(go())
# will print 'value'

Connections pool:

import asyncio
import aioredis

loop = asyncio.get_event_loop()

async def go():
    pool = await aioredis.create_pool(
        ('localhost', 6379),
        minsize=5, maxsize=10,
        loop=loop)
    with await pool as redis:    # high-level redis API instance
        await redis.set('my-key', 'value')
        print(await redis.get('my-key'))
    # graceful shutdown
    pool.close()
    await pool.wait_closed()

loop.run_until_complete(go())

以上是关于关于Redis Python 异步 Client的主要内容,如果未能解决你的问题,请参考以下文章

python 关于celery的异步任务队列的基本使用(celery+redis)采用配置文件设置

使用 python-api-client 异步插入所有请求

关于请问有C++ 使用redis的例子吗

分布式系统--封装Redis消息队列--消息队列下的异步场景

分布式系统--封装Redis消息队列--消息队列下的异步场景

redis 发布订阅实现异步实时发短信