在線教育已經成為當下的熱點行業之一,云數據庫 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)豐富的數據結構和優秀的性能,在線課堂應用可以對人員信息進行輕量級的管理,讓師生在線上教育場景中獲得更好的體驗和教學效果。