异步上传石墨文件进度条前端展示记录(采用Redis中List数据结构实现)
上篇文章说到,之前使用Redis的String数据结构进行存储异步上传石墨文档的任务状态,做法有些性能上的问题。
下面简单列举一下采用String数据结构进行存储的劣势:
缺少历史记录:无法追踪任务执行的完整过程、只能获取最新状态,丢失中间状态信息
并发处理:在高并发场景下需要额外考虑乐观锁等机制避免数据覆盖、需要使用
WATCH
命令或Lua脚本确保原子性功能局限:不支持队列操作,无法实现基于队列的分布式处理、不适合需要按顺序处理的场景
采用Redis的LIst数据结构或者String数据结构如何选择?
适合使用List数据结构
- 需要完整记录任务执行历史
- 需要按时间顺序查看任务状态变化
- 任务执行次数有限,存储空间不是主要考虑因素
- 需要支持分布式任务处理
适合使用String数据结构
-
任务更新频繁,存储空间是关键考虑因素
-
系统并发量大&#x