【协程】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 @   郭祺迦  阅读(195)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示