记一次在线课程查看无响应的处理过程

先说下背景:用户学习平台,单个课程有80课节左右,不同的用户分配不同的营期,不同的营期有不同的课节;为了提升用户响应速度对课节列表和单个课节的学习进度数据进行了缓存。当课程进行了更新时,会同步把课程对应用户学习数据也更新。


上述方案一段时间运行良好,相安无事。突然有一天运营小伙伴要调整课程相关信息,多人同时更新不同的课程信息,需要清除用户学习缓存。

因为使用了Redis keys模糊查询,导致阻塞I/O,导致无响应,对比三种方案如下:

方案1:Scan VS Keys:Scan相当于分页查询,解决了长时间阻塞IO,但是CPU一直高位运作,系统响应依旧很慢。

方案2:记录所有Keys,指定删除:可以解决长时间阻塞IO和CPU高位运作,但是侵入业务代码,维护难度增加

方案3:通过课程版本号(时间戳等):引入版本号概念,随机初始一个版本号,每次更新增加1,作为Key的前缀,以空间换取时间。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容