【协程】12、案例1:异步操作redis

在使用python代码操作Redis时,连接/操作/断开都是IO。
pip3 install aioredis
# -*- coding: utf-8 -*-
import asyncio
import aioredis


async def execute(address, password):
    print('开始执行:{}'.format(address))
    # 网络IO操作,创建redis连接  ;await就是等待有结果后才会继续往下执行
    redis = await aioredis.create_redis(address, password=password)
    print('redis:{}'.redis)

    # await等待hmset_dict创建成功后才会往下走
    await redis.hmset_dict('car', key1=1, key2=3, keys=3)

    # 网络IO操作,去redis中获取值
    result = await redis.hgetall('car', encoding='utf-8')
    print('result:{}'.format(result))

    redis.close()
    # 网络IO操作,关闭redis连接
    await redis.wait_closed()
    print('结束:{}'.format(address))

loop = asyncio.get_event_loop()
loop.run_until_complete(execute('redis://47.94.132.145:6379', 'root')) 
示例2:
# -*- coding: utf-8 -*-
import asyncio
import aioredis


async def execute(address, password):
    print('开始执行:{}'.format(address))
    # 网络IO操作,创建redis连接  ;await就是等待有结果后才会继续往下执行
    redis = await aioredis.create_redis(address, password=password)
    print('redis:{}'.redis)

    # await等待hmset_dict创建成功后才会往下走
    await redis.hmset_dict('car', key1=1, key2=3, keys=3)

    # 网络IO操作,去redis中获取值
    result = await redis.hgetall('car', encoding='utf-8')
    print('result:{}'.format(result))

    redis.close()
    # 网络IO操作,关闭redis连接
    await redis.wait_closed()
    print('结束:{}'.format(address))


tasks = [
    asyncio.ensure_future(execute('redis://47.94.132.145:6379', 'root')),
    asyncio.ensure_future(execute('redis://47.94.132.145:6379', 'root'))
]

loop = asyncio.get_event_loop()
loop.run_until_complete(asyncio.wait(tasks))
posted @ 2022-05-31 14:11  郭祺迦  阅读(224)  评论(0)    收藏  举报