redis-py、缓存键与数据编码
Redis、缓存与异步任务#Python全栈#第十五阶段#Redis、缓存与异步任务#redis-py、缓存键与数据编码约 704 字 · 2 分钟阅读
追问显示点击任意追问卡片可收起 / 展开
Python 项目怎样建立 Redis 客户端与连接池?
追问 连接地址、数据库编号、超时、身份和 TLS 怎样配置?为何通常不应每次业务调用都新建客户端?
同步客户端与 redis.asyncio 客户端如何选择?
追问 在 async 接口中调用同步网络操作会怎样?异步客户端与连接池的关闭和事件循环归属怎样管理?
redis-py 默认字节返回与 decode_responses 有什么区别?
追问 文本、二进制、编码错误与 JSON 反序列化怎样处理?为何不应简单对 bytes 使用 str 得到业务文本?
缓存键应该包含哪些维度?
追问 环境、租户、资源、用户、语言、参数和结构版本怎样编码?只用题目 ID 会漏掉哪些个性化结果?
查询参数怎样规范化成稳定缓存键?
追问 参数顺序、默认值、大小写和多值筛选如何处理?什么情况下看似相近的请求不能共用缓存?
缓存值的序列化方式应如何选择?
追问 JSON、二进制编码与压缩如何权衡?为什么不能把不可信 pickle 内容直接反序列化?
缓存未命中与有效空值怎样区分?
追问 None、空列表、零和空字符串各如何表达?为什么用
if not value 判断缺失容易出错?如何设置或更新键,同时明确 TTL 行为?
追问 SET 带过期选项、单独 EXPIRE 与保留 TTL 的选项如何选择?覆盖值后过期时间是否一定保持不变?
Pipeline 与普通逐条命令有什么区别?
追问 减少往返与事务原子性为什么是两个概念?redis-py pipeline 的事务默认行为应怎样确认?
KEYS、SCAN 与大范围清理有什么取舍?
追问 SCAN 为何可能重复返回、不能视为静态快照?怎样避免全库阻塞、巨大响应和误删其他业务键?
核对资料: redis-py 官方指南。