ホームページ  >  記事  >  データベース  >  Redis の GETBIT と SETBIT について簡単に説明します

Redis の GETBIT と SETBIT について簡単に説明します

藏色散人
藏色散人転載
2021-09-12 16:49:172354ブラウズ

Redis はメモリ内データベースであり、その利点は自明です。
詳しくは公式サイトの紹介文をご覧ください。 https://redis.io

主要なデータ型は、文字列、リスト、セット、ハッシュの 5 つです。
文字列型の一般的なコマンドを学んだとき、GETBITSETBITの意味がよくわからなかったので、関連記事を探しました。 GETBITSETBIT のアプリケーションを紹介する記事を見たので、非常に強力だと感じました。記録は次のとおりです。ビデオ サイト、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 はログインしていることを意味します。

毎日ビットマップを生成します。

複数日のビットマップをカウントすることで、アクティブ ユーザーのカウントなどの操作を実現できます。

推奨される調査: 「
redis チュートリアル

以上がRedis の GETBIT と SETBIT について簡単に説明しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。