Redis의 생방송 장면에서의 실천 방안에 대해 간단히 이야기하다
배경 정보
영상 생방송은 생방송 시스템의 대외적인 표현 형식으로서 전체 시스템의 핵심 중 하나이다.영상 생방송 창을 제외하고 생방송 사이의 온라인 사용자, 선물, 댓글, 좋아요, 차트 등 데이터 정보는 시효성이 높고 상호작용성이 강하며 시스템의 시간 지연에 대한 요구가 매우 높기 때문에 Redis 캐시 서비스로 처리하기에 매우 적합하다.
이 모범 사례는 Redis 버전을 사용하여 영상 생방송 간 정보 시스템을 구축하는 예시를 보여 줍니다.다음과 같은 세 가지 정보 구축 방법에 대해 알아볼 수 있습니다.
실시간 차트 클래스 정보
실시간 차트 정보는 생방송 간 온라인 사용자 목록, 각종 선물의 차트, 탄막 메시지(메시지 차원에 따라 정렬된 메시지 차트와 유사) 등을 포함하여 Redis의 질서정연한 집합(sorted set) 구조를 사용하여 저장하기에 적합하다.
Redis 집합은 빈 값 산열 목록 (hash table) 을 사용하여 이루어지기 때문에 집합에 대한 삭제 수정 작업의 시간 복잡도는 모두 O (1) 이다.질서정연한 집합 중의 모든 구성원은 하나의 점수(score)를 연결하여 정렬 등 조작을 편리하게 할 수 있다.다음은 탄막 메시지를 추가하고 되돌리는 것을 예로 삼아 생방송 정보 시스템에 질서정연하게 집합된 실제 운용에 대해 설명한다.
유닉스timestamp+밀리초수를 점수로 하여 user55의 생방송 사이에 추가된 5개의 탄막을 기록합니다.
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"
타임라인 정보
시간선 정보는 시간을 차원으로 하는 정보 목록으로 전형적인 앵커 동태, 신첩 등이 있다.이러한 정보는 일정한 시간 순서에 따라 배열되며, 목록 (list) 이나 시퀀스 테이블을 사용하여 저장할 수 있습니다. 예는 다음과 같습니다.
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}"
Redis가 생방송 장면에서 실천 방안을 간단히 이야기하는 이 글은 여기까지 소개되었습니다. 더 많은 Redis 생방송 장면의 실천 내용은 저희 이전의 글을 검색하거나 아래의 관련 글을 계속 훑어보십시오. 앞으로 많은 응원 부탁드립니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
그래프 구조를 무상으로 취급할 수 없는 것은 싫기 때문에, redisgraph를 WSL2에 극치고 설치해 보았습니다.제목은 만우절이므로. 그렇다, 역시, 앞으로는 그래프 구조 데이터베이스라고 생각했다. 생각한 것은 몇 년 전인가. 전부터 Neo4j는 시험하고 있지만, 영업 분들로부터 상용 라이센스가 높다고 가르쳐 주었으므로, 전전...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.