Redis는 메모리 내 데이터베이스이며 그 장점은 자명합니다.
자세한 내용은 공식 홈페이지에서 소개를 확인하실 수 있습니다. https://redis.io
문자열, 목록, 집합 및 해시의 다섯 가지 주요 데이터 유형이 있습니다.
문자열 유형의 공통 명령을 배웠을 때 GETBIT
和SETBIT
的意义并不是非常了解,所以就搜索了一下相关文章。看到一篇介绍GETBIT
和SETBIT
의 응용 기사에 대해 매우 강력한 느낌을 받았습니다. 기록은 다음과 같습니다.
우리가 일부 블로그 웹 사이트 또는 비디오 웹 사이트에 로그인하면 웹 사이트에 우리가 있는지 여부가 기록되는 경우가 많습니다. 특정 기사를 읽거나 비디오를 시청했습니다.
기존 mysql 데이터베이스로 구현하면 사용자 수가 많고 기사와 동영상이 많으면 데이터베이스에 많은 부담을 주게 됩니다.
Redis의 GETBIT 및 SETBIT을 사용하는 것이 훨씬 더 간단할 것입니다.
비디오를 예로 들어 보겠습니다. 우리는 사용자가 특정 비디오를 시청했는지 여부를 기록하기 위해 비트맵을 사용합니다. 예를 들어
key: video:1201 value: 000000...0000
key에는 동영상의 영어 이름(video+colon+id)이 표시됩니다.
값은 비트맵입니다. 1비트에는 0 또는 1의 두 가지 가능성이 있습니다. 0은 보지 않았음을 의미하고, 1은 이미 보았음을 의미합니다.
위치(오프셋)는 사용자 ID를 나타냅니다. 예를 들어 200번째 위치는 user_id가 200인 사용자가 ID가 1201인 동영상을 시청했는지 여부를 나타냅니다.
Settings
# SETBIT key offset value SETBIT video:1201 200 1 # 上面的命令就是设置ID为200的用户,已经看过了ID为1201的视频。
Query
# GETBIT key offset GETBIT video:1201 200 # 上面的命令就是查询ID为200的用户是否观看了ID为1201的视频
물론, 각 사용자의 비트맵에 대응할 수도 있습니다. 비트맵의 비트는 동영상 시청 여부를 나타냅니다.
또한 기사에서는 현재 매우 인기 있는 체크인 또는 로그인 기록도 유사한 디자인으로 구현될 수 있음을 보여줍니다.
예를 들어, 비트맵을 사용하여 모든 사용자의 로그인 상태를 기록합니다. 비트맵의 1비트는 해당 날짜에 사용자가 로그인했는지 여부를 나타내고, 0은 로그인하지 않았음을 의미하고, 1은 로그인했음을 의미합니다.
매일 비트맵을 생성하세요.
여러 날의 비트맵을 계산하여 활성 사용자 계산과 같은 작업을 수행할 수 있습니다.