实验:Redis 在线状态¶
预计:60 分钟|验证:TTL、Set 去重、批量读取
目标¶
- 验证独立 key 的 TTL;
- 验证 Set 重复添加不会重复计数;
- 理解 MGET 批量读取;
- 观察“key 过期”和“在线集合移除”不是一回事。
准备¶
有 Docker 时启动临时 Redis:
另开终端:
实验一:独立 TTL¶
等待 10 秒后:
观察 key 是否消失。
实验二:Set 去重¶
SADD online_devices 1001
SADD online_devices 1001
SADD online_devices 1002
SCARD online_devices
SMEMBERS online_devices
预测:SCARD 返回多少?为什么第二次添加 1001 不增加数量?
实验三:状态不自动联动¶
同时执行:
等待 TTL 过期,再执行:
你会发现 last_seen 已消失,但 1001 仍在 Set 中。这证明:
TTL 只负责 key 过期,不会自动执行你的业务状态迁移。
真实系统需要超时 worker 或可靠事件执行 SREM。
实验四:批量读取¶
SET device:status:1001 online
SET device:status:1002 offline
SET device:status:1003 online
MGET device:status:1001 device:status:1002 device:status:1003
MGET 减少网络往返,但仍随 key 数增长;不要把它当无限批量接口。
实验报告¶
- 我在操作前写了预测
- 我解释了 TTL 与 Set 不自动联动
- 我能解释 SADD 的幂等性
- 我能解释 MGET 的收益和边界
- 我把结论写成 90 秒口述