Redis はメモリ内データベースであり、その利点は自明です。
詳しくは公式サイトの紹介文をご覧ください。 https://redis.io
主要なデータ型は、文字列、リスト、セット、ハッシュの 5 つです。
文字列型の一般的なコマンドを学んだとき、GETBIT
とSETBIT
の意味がよくわからなかったので、関連記事を探しました。 GETBIT
と SETBIT
のアプリケーションを紹介する記事を見たので、非常に強力だと感じました。記録は次のとおりです。ビデオ サイト、Web サイトでは、特定の記事を読んだか、特定のビデオを視聴したかが記録されることがよくあります。
従来の mysql データベースを使用して実装した場合、ユーザーの数が多く、記事やビデオが多数ある場合、データベースに大きな負荷がかかります。
Redis の GETBIT と SETBIT を使用する方がはるかに簡単です。
ビデオを例に挙げます。ユーザーが特定のビデオを視聴したかどうかを記録するためにビットマップを使用します。1 つのビデオは 1 つのビットマップに対応します。たとえば、key: video:1201 value: 000000...0000
key にはビデオの英語名のビデオ コロン ID がマークされます。 value はビットマップです。 1 つのビットには、0 または 1 の 2 つの可能性があります。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 はログインしていることを意味します。毎日ビットマップを生成します。
複数日のビットマップをカウントすることで、アクティブ ユーザーのカウントなどの操作を実現できます。