在线教育已经成为当下的热点行业之一,云数据库Redis版丰富的数据结构可以帮助您快速实现在线课堂应用的相关功能。

背景信息

随着互联网直播的流行,直播已经走向了各行各业,老师使用直播应用进行线上教学也屡见不鲜,尤其是在2020年的新冠肺炎抗疫大作战中,在线课堂成为技术抗疫的重要一环,切实解决了师生无法到校上课的困境。

在线下教学中,师生互动是不可或缺的环节。通过互动,老师能够更好地掌握学生的学习情况,增加课堂的趣味性,学生通过互动能够集中注意力,提升学习效果。为了有更好的线上教学体验,在线课堂也需要师生互动。在线课堂应用可以通过连麦功能,实现在线的师生互动。

在线课堂连麦的一般流程为:

  1. 老师发起课堂连麦。
  2. 学生请求连麦。
  3. 老师同意连麦。
  4. 开始连麦互动。
  5. 老师结束课堂连麦。

在直播应用中,在线课堂连麦的业务流程图如下所示。

在线课堂连麦业务流程图

从流程图可以看出,连麦过程中,在线课堂应用需要管理两个队列:申请连麦队列和麦在线队列。

  • 申请连麦队列是老师让同学发言时,申请连麦的同学列表。
  • 麦在线队列是老师选择连麦同学后,可通过麦克风发言的用户(含老师和同学)列表。

没有连麦时,麦在线队列中只有老师一人。连麦结束后,应用将发言同学从申请连麦队列和麦在线队列中移除。

使用云数据库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

总结

借助云数据库Redis版丰富的数据结构和优秀的性能,在线课堂应用可以对人员信息进行轻量级的管理,让师生在线上教育场景中获得更好的体验和教学效果。