问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

aioredis实战总结:set和get方法参数详解

创作时间:
作者:
@小白创作中心

aioredis实战总结:set和get方法参数详解

引用
CSDN
1.
https://blog.csdn.net/hhhhhhhhhhwwwwwwwwww/article/details/146038068

在Python异步编程中,aioredis是一个非常重要的库,它提供了异步的Redis客户端,能够帮助开发者更高效地进行缓存操作。本文将详细介绍aioredis中set和get方法的参数使用,帮助开发者更好地掌握这些核心功能。

1. set 方法参数详解

方法原型:

await redis.set(key, value, ex=None, px=None, nx=False, xx=False, keepttl=False)

核心参数:

  • key (str):存储的键名
  • value (str/bytes):存储的值
  • ex (int/None):过期时间(秒),例如 ex=60 表示 60 秒后过期
  • px (int/None):过期时间(毫秒),优先级高于 ex
  • nx (bool):若为 True,仅当键不存在时设置值(类似 SETNX 命令)
  • xx (bool):若为 True,仅当键存在时设置值(类似 SETXX 命令)
  • keepttl (bool):保留键原有的过期时间(需 Redis 6.0+)

示例:

import asyncio
import aioredis

async def main():
    # 创建连接池
    redis = await aioredis.create_redis_pool('redis://localhost:6379')

    # 设置键值对,60秒后过期,且仅在键不存在时设置
    await redis.set("user:1001", "Alice", ex=60, nx=True)
    
    # 关闭连接
    redis.close()
    await redis.wait_closed()

asyncio.run(main())

2. get 方法参数详解

方法原型:

await redis.get(key, encoding=None)

核心参数:

  • key (str):要获取的键名
  • encoding (str/None):指定解码方式(如 'utf-8'),默认返回字节(bytes)

示例:

import asyncio
import aioredis

async def main():
    # 创建连接池并指定编码
    redis = await aioredis.create_redis_pool('redis://localhost:6379?encoding=utf-8')

    # 获取键值(自动解码为字符串)
    value = await redis.get("user:1001")
    print(f"获取到的值:{value}")  # 输出字符串,无需手动 decode()

    # 关闭连接
    redis.close()
    await redis.wait_closed()

asyncio.run(main())

3. 综合场景示例

带过期时间和批量操作:

import asyncio
import aioredis

async def main():
    redis = await aioredis.create_redis_pool('redis://localhost:6379')

    # 设置带过期时间的键值
    await redis.set("session:token", "abc123", ex=3600)

    # 获取并手动解码(未指定 encoding 时)
    token_bytes = await redis.get("session:token")
    token_str = token_bytes.decode("utf-8") if token_bytes else None
    print(f"Session Token: {token_str}")

    # 关闭连接
    redis.close()
    await redis.wait_closed()

asyncio.run(main())

4. 注意事项

  1. 返回值类型:
  • 默认返回字节(bytes),可通过 encoding 参数或连接字符串(如 ?encoding=utf-8)自动解码为字符串。
  1. 错误处理:
  • 键不存在时,get 返回 Noneset 若使用 nx=True 且键已存在,则不执行操作。
  1. 性能优化:
  • 使用连接池(create_redis_pool)减少连接开销。

通过合理组合参数,可实现灵活的缓存策略(如分布式锁、短期会话存储等)。更多高级用法可参考 aioredis 官方文档。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号