Кодировать слова непросто, нажмите на внимание и посмотрите, спасибо~
Исходная информация
Как внешнее проявление системы прямого вещания, комната для живого видео является одним из ядер всей системы. В дополнение к окну живого видео онлайн-пользователи, подарки, комментарии, лайки, списки лидеров и другая информация данных в комнате прямой трансляции очень чувствительны ко времени и интерактивны, и имеют очень высокие требования к системной задержке, что очень подходит за использование службы кеша Redis для обработки файлов .
Этот передовой опыт покажет вам пример создания информационной системы видеокомнаты в режиме реального времени с использованием Redis. Вы узнаете, как создаются три типа информации:
- информация о ранжировании в реальном времени
- подсчитывать информацию
- Информация о временной шкале
информация о ранжировании в реальном времени
Информация о ранжировании в режиме реального времени включает в себя список онлайн-пользователей в комнате прямой трансляции, рейтинговый список различных подарков и сообщение в чате (аналогично ранжированию сообщений, отсортированных по размеру сообщения) и т. д. Он подходит для хранение в отсортированной структуре набора в Redis..
Коллекции Redis реализованы с использованием хеш-таблицы с пустыми значениями, поэтому временная сложность добавления, удаления, изменения и проверки коллекции составляет O (1). Каждому члену отсортированного набора соответствует оценка, которую можно легко реализовать для сортировки и других операций. Практическое применение заказанного набора в информационной системе комнаты прямого эфира описано ниже на примере добавления и возврата барражирующих сообщений.
- Используя временную метку unix + миллисекунды в качестве счета, запишите 5 заграждений, добавленных комнатой прямой трансляции user55.:
redis> ZADD user55:_danmu 1523959031601166 message111111111111
(integer) 1
11.160.24.14:3003> ZADD user55:_danmu 1523959031601266 message222222222222
(integer) 1
11.160.24.14:3003> ZADD user55:_danmu 1523959088894232 message33333
(integer) 1
11.160.24.14:3003> ZADD user55:_danmu 1523959090390160 message444444
(integer) 1
11.160.24.14:3003> ZADD user55:_danmu 1523959092951218 message5555
(integer) 1
- Вернуть последние 3 информации о заграждениях:
redis> ZREVRANGEBYSCORE user55:_danmu +inf -inf LIMIT 0 3
1) "message5555"
2) "message444444"
3) "message33333"
- Возвращает 3 сообщения заграждения в течение указанного периода времени:
redis> ZREVRANGEBYSCORE user55:_danmu 1523959088894232 -inf LIMIT 0 3
1) "message33333"
2) "message222222222222"
3) "message111111111111"
подсчитывать информацию
Информация о подсчете использует в качестве примера данные, связанные с пользователем, такие как количество непрочитанных сообщений, количество подписчиков, количество поклонников и очки опыта. Этот тип сообщения подходит для хранения в хеш-структуре в Redis.. Например, количество подписчиков может быть обработано следующим образом:
redis> HSET user:55 follower 5
(integer) 1
redis> HINCRBY user:55 follower 1 //关注数+1
(integer) 6
redis> HGETALL user:55
1) "follow"
2) "6"
Информация о временной шкале
Информация о временной шкале — это список информации со временем в качестве параметра, обычно включающий основные новости, новые сообщения и т. д.. Этот тип информации располагается в фиксированном хронологическом порядке и может храниться в виде списка или упорядоченного списка, например:
redis> LPUSH user:55_recent_activitiy '{datetime:201804112010,type:publish,title:开播啦,content:加油}'
(integer) 1
redis> LPUSH user:55_recent_activitiy '{datetime:201804131910,type:publish,title:请假,content:抱歉,今天有事鸽一天}'
(integer) 2
redis> LRANGE user:55_recent_activitiy 0 10
1) "{datetime:201804131910,type:publish,title:\xe8\xaf\xb7\xe5\x81\x87\",content:\xe6\x8a\xb1\xe6\xad\x89\xef\xbc\x8c\xe4\xbb\x8a\xe5\xa4\xa9\xe6\x9c\x89\xe4\xba\x8b\xe9\xb8\xbd\xe4\xb8\x80\xe5\xa4\xa9}"
2) "{datetime:201804112010,type:publish,title:\xe5\xbc\x80\xe6\x92\xad\xe5\x95\xa6,content:\xe5\x8a\xa0\xe6\xb2\xb9}"