python 异步操作redis
由于python对redis进行连接、增删改查等操作时都是网络IO,可能需要一定时间,因此实现异步操作可提高并发性。首先需要先安装aioredis模块。
·
由于python对redis进行连接、增删改查等操作时都是网络IO,可能需要一定时间,因此实现异步操作可提高并发性。
首先需要先安装aioredis模块
pip install aioredis==1.3.1
我在虚拟机中运行redis(前台启动) :
在虚拟机中先查看能否ping通主机:
ping通的话我设置不需要密码就可以访问redis:
czc@czc-VirtualBox:~$ redis-cli
127.0.0.1:6379> config set protected-mode no
接下来在主机通过python代码异步操作redis:
示例1:
import asyncio
import aioredis
async def execute1(address, password):
print("开始连接redis:",address)
# 网络IO操作:创建redis连接
redis = await aioredis.create_redis(address, password=password)
# 网络IO操作:在redis中设置哈希值person,内部在设两个键值对
await redis.hmset_dict("person",{"name1":"cc", "age":19})
# 网络IO操作:去redis中获取值
result = await redis.hgetall("person",encoding="utf-8")
print(result)
# 网络IO操作:关闭redis连接
redis.close()
print("结束连接redis:", address)
async def execute2(address, password):
print("开始连接redis:",address)
# 网络IO操作:创建redis连接
redis = await aioredis.create_redis(address, password=password)
# 网络IO操作:在redis中设置哈希值person,内部在设两个键值对
await redis.hmset_dict("person",{"name2":"mm", "age":18})
# 网络IO操作:去redis中获取值
result = await redis.hgetall("person",encoding="utf-8")
print(result)
# 网络IO操作:关闭redis连接
redis.close()
print("结束连接redis:", address)
async def main():
print("开始执行任务")
task_list = [
asyncio.create_task(execute1("redis://192.168.1.173:6379", None)),
asyncio.create_task(execute2("redis://192.168.1.173:6379", None)),
]
done,pending = await asyncio.wait(task_list, timeout=2) #timeout表示只等2s,超过2s就不等了
print(done,pending)
if __name__ == '__main__':
asyncio.run(main())
结果:
在虚拟机中查看是否已经存储成功:
更多推荐
已为社区贡献8条内容
所有评论(0)