首页 > 数据库 >实战案例一:异步操作redis

实战案例一:异步操作redis

时间:2024-08-27 21:18:57浏览次数:7  
标签:实战 异步 await redis IO address print password

异步redis

在使用python代码操作redis时,链接/操作/断开都是网络IO。

pip3 install aioredis

示例1:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import asyncio
import aioredis


async def execute(address, password):
    print("开始执行", address)
    # 网络IO操作:创建redis连接
    redis = await aioredis.create_redis(address, password=password)

    # 网络IO操作:在redis中设置哈希值car,内部在设三个键值对,即: redis = { car:{key1:1,key2:2,key3:3}}
    await redis.hmset_dict('car', key1=1, key2=2, key3=3)

    # 网络IO操作:去redis中获取值
    result = await redis.hgetall('car', encoding='utf-8')
    print(result)

    redis.close()
    # 网络IO操作:关闭redis连接
    await redis.wait_closed()

    print("结束", address)


asyncio.run( execute('redis://47.93.4.198:6379', "root!2345") )

示例2:

import asyncio
import aioredis


async def execute(address, password):
    print("开始执行", address)

    # 网络IO操作:先去连接 47.93.4.197:6379,遇到IO则自动切换任务,去连接47.93.4.198:6379
    redis = await aioredis.create_redis_pool(address, password=password)

    # 网络IO操作:遇到IO会自动切换任务
    await redis.hmset_dict('car', key1=1, key2=2, key3=3)

    # 网络IO操作:遇到IO会自动切换任务
    result = await redis.hgetall('car', encoding='utf-8')
    print(result)

    redis.close()
    # 网络IO操作:遇到IO会自动切换任务
    await redis.wait_closed()

    print("结束", address)


task_list = [
    execute('redis://47.93.4.197:6379', "root!2345"),
    execute('redis://47.93.4.198:6379', "root!2345")
]

asyncio.run(asyncio.wait(task_list))

标签:实战,异步,await,redis,IO,address,print,password
From: https://www.cnblogs.com/Tmars/p/18383554

相关文章

  • 实战案例二:异步操作MySQL
    异步MySQLpip3installaiomysql示例1:importasyncioimportaiomysqlasyncdefexecute():#网络IO操作:连接MySQLconn=awaitaiomysql.connect(host='127.0.0.1',port=3306,user='root',password='123',db='mysql',......
  • 实战案例三:异步操作FastAPI
    FastAPI框架安装pip3installfastapipip3installuvicorn(asgi内部基于uvloop)示例:luffy.py#!/usr/bin/envpython#-*-coding:utf-8-*-importasyncioimportuvicornimportaioredisfromaioredisimportRedisfromfastapiimportFastAPIapp=FastAPI()......
  • 实战案例四:异步实现爬虫
    爬虫pip3installaiohttpimportaiohttpimportasyncioasyncdeffetch(session,url):print("发送请求:",url)asyncwithsession.get(url,verify_ssl=False)asresponse:text=awaitresponse.text()print("得到结果:",......
  • 项目中Redis常见的一些问题(缓存穿透,缓存雪崩,内存耗尽等)
    缓存穿透缓存穿透是指查询一个不存在的数据,导致每次请求查询这个不存在的数据都会转发到数据库,可能导致数据库崩溃通常都会用布隆过滤器来解决它布隆过滤器布隆过滤器主要是用于检索一个元素是否在一个集合中。它的底层主要是先去初始化一个比较大数组,里面存放的二进......
  • redis-redis为什么这么快
    Redis为什么这么快?作者:w08e博客:https://www.cnblogs.com/w08e......
  • redis-删除策略
    Redis过期删除策略作者:w08e博客:https://www.cnblogs.com/w08e......
  • redis-过期策略
    redis内存淘汰策略作者:w08e在线博客:https://www.cnblogs.com/w08e......
  • 用Python实现时间序列模型实战——Day1:时间序列的基本概念
    一、学习内容1.时间序列数据的定义与特点定义:时间序列数据是一组按时间顺序排列的观测值。时间序列的每个观测值都与特定时间点相关联。例如,气温每天的记录、股票每日的收盘价等。特点:时间依赖性:时间序列数据的一个基本特点是当前数据点可能依赖于之前的一个或多个数据点......
  • asyncio + httpx异步请求板子
    AI写的asyncio+httpx异步请求板子importasyncioimporthttpximportjsonimportaiofilesfrompathlibimportPathproject_dir=Path(__file__).resolve().parent#使用代理proxy="http://username:password@ip:port"#异步并发数max_concurrency=5input_f......
  • Redis哨兵部署
    机器列表:主节点192.168.232.8:7000/27000从节点192.168.232.9:8000/28000,9000/29000 redis的程序编译安装见单实例安装文档 主节点操作步骤:groupaddredis&&useradd-r-gredisredismkdir-p/data/redis-sentinel/7000配置文件redis.conf、sentinel.confcat......