关于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
需要先安装的依赖:
- Python 3.3 and asyncio 或 Python 3.4+
- 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)采用配置文件设置
分布式系统--封装Redis消息队列--消息队列下的异步场景