【協程】12、案例1:非同步操作redis
阿新 • • 發佈:2022-05-31
在使用python程式碼操作Redis時,連線/操作/斷開都是IO。
pip3 install aioredis
示例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)) loop = asyncio.get_event_loop() loop.run_until_complete(execute('redis://47.94.132.145:6379', 'root'))
# -*- 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))