1. 程式人生 > 其它 >【協程】12、案例1:非同步操作redis

【協程】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))