在线教育已经成为当下的热点行业之一,云数据库 Tair(兼容 Redis)丰富的数据结构可以帮助您快速实现在线课堂应用的相关功能。
背景信息
随着互联网直播的流行,直播已经走向了各行各业,老师使用直播应用进行线上教学也屡见不鲜,尤其是在2020年的新冠肺炎抗疫大作战中,在线课堂成为技术抗疫的重要一环,切实解决了师生无法到校上课的困境。
在线下教学中,师生互动是不可或缺的环节。通过互动,老师能够更好地掌握学生的学习情况,增加课堂的趣味性,学生通过互动能够集中注意力,提升学习效果。为了有更好的线上教学体验,在线课堂也需要师生互动。在线课堂应用可以通过连麦功能,实现在线的师生互动。
在线课堂连麦的一般流程为:
老师发起课堂连麦。
学生请求连麦。
老师同意连麦。
开始连麦互动。
老师结束课堂连麦。
在直播应用中,在线课堂连麦的业务流程图如下所示。
从流程图可以看出,连麦过程中,在线课堂应用需要管理两个队列:申请连麦队列和麦在线队列。
申请连麦队列是老师让同学发言时,申请连麦的同学列表。
麦在线队列是老师选择连麦同学后,可通过麦克风发言的用户(含老师和同学)列表。
没有连麦时,麦在线队列中只有老师一人。连麦结束后,应用将发言同学从申请连麦队列和麦在线队列中移除。
使用云数据库 Tair(兼容 Redis)的list和hash结构,您可以快速实现有序队列(申请连麦队列)和无序队列(麦在线队列)的管理,还可以在连麦结束后快速地删除相关信息。下文为您介绍具体的实现方案。
实现方案
连麦队列
使用list结构保存连麦队列,方便按时间顺序展示队列:
使用课堂ID作为list的key。
使用学生ID作为list的element。
麦在线队列
麦在线队列主要用于展示已连麦的用户,对顺序没有要求,因此可使用hash结构保存:
使用课堂ID作为hash的key。
使用用户(含学生和老师)ID作为hash的field。
使用详细的连麦信息作为field的value。
示例代码
学生提交连麦申请:
RPUSH your_class_id studentC_id RPUSH your_class_id studentA_id RPUSH your_class_id studentB_id
展示连麦队列:
LRANGE your_class_id 0 MAX_CLASS_NUM
老师选择其中一个学生或多个学生,同意连麦:
HSET your_class_id studentA_id OnlineDetailDO
老师和其中一个学生完成连麦,挂掉通话:
HDEL your_class_id studentA_id LREM your_class_id 0 studentA_id
总结
借助云数据库 Tair(兼容 Redis)丰富的数据结构和优秀的性能,在线课堂应用可以对人员信息进行轻量级的管理,让师生在线上教育场景中获得更好的体验和教学效果。