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. 注意事项
- 返回值类型:
- 默认返回字节(bytes),可通过
encoding
参数或连接字符串(如?encoding=utf-8
)自动解码为字符串。
- 错误处理:
- 键不存在时,
get
返回None
;set
若使用nx=True
且键已存在,则不执行操作。
- 性能优化:
- 使用连接池(
create_redis_pool
)减少连接开销。
通过合理组合参数,可实现灵活的缓存策略(如分布式锁、短期会话存储等)。更多高级用法可参考 aioredis 官方文档。
热门推荐
如何通过员工宿舍管理办法提升员工的生活质量?
探讨选择题的原题设计:如何提高考试效果
苯佐卡因的作用与功效与危害
如何组织一次有效的事故分析会?
Win8打印机驱动安装指南:快速解决驱动兼容性问题
指数投资必懂:三大常用估值指标详解
荣格:读懂无意识,就读懂了现代人的心灵问题
身体各部位怎么按摩 不同部位按摩手法图解
铁观音茶树品种的歪尾是指哪个部位?茶树位置详解
普洱茶属不属于红茶类
华为人力资源管理体系精髓及启示
情感教育的深度挖掘:培养孩子的同理心与情感表达
985和211哪个好?揭秘两大工程背后的真相
蛋糕打发全攻略:蛋白、蛋黄和全蛋的完美打发技巧
夏天了天天犯困是怎么回事,怎么办
尺寸接近,问界M8和M9区别在哪儿?
探秘SMT贴片加工厂家的质量控制体系
跨流域水利防汛平台信息共享与协同调度机制建设
手术后血糖高如何调理
乌龙茶冲泡全攻略:盖碗与紫砂壶两种经典冲泡方法详解
跟踪取证是否合法?(讨论跟踪取证的法律问题)
体重管理,从“标准”到“方法”
无尽冬日史密斯技能详解 无尽冬日游戏史密斯有哪些技能
诺贝尔文学奖得主们为孩子写的书
信息管理与信息系统专业就业方向及前景!附2024大学排名
历代的真实圣旨是什么样子的
2025北京中央电视塔游玩攻略(附门票预约+开放时间+地址+交通)
医疗健康科普 | 我们为什么会发热?
剧烈运动后胸痛别忽视!如何辨别生理反应与潜在疾病?
保险拒赔后如何通过法律途径维权?法院起诉流程全解析