【协程】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))
本文来自博客园,作者:郭祺迦,转载请注明原文链接:https://www.cnblogs.com/guojie-guojie/p/16330274.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)