Redis:Bitmapsシーンと共通コマンドを使用する
6400 ワード
Bitmapsの紹介 Redisが提供するBitmapsという「データ構造」は、位置合わせの動作を実現することができる.Bitmaps自体はデータ構造ではなく、実際には文字列ですが、文字列のビットを操作することができます. Bitmapsはビット単位の配列を想像することができ、配列中の各セルは0または1しか保存できず、配列の下付きはbitmapsでオフセット量と呼ばれている. 単一bitmapsの最大長は512 MB、すなわち2^32ビットである. bitmapsの最大の利点は、ストレージスペースを節約することです.例えば、異なるユーザを自己増加idで表すシステムでは、512 MBの空間だけで40億人のユーザの単一情報(例えば、ユーザがニュースメールを受信したいかどうか)を記録することができる. には、2つのタイプのビット操作があります.1つは、特定のビットビットの値を設定/取得するなど、特定のビットビットに対する操作です.もう1つのクラスは、バッチbitビット動作であり、例えば、所与の範囲内で1と統計されたビットビット数である. Bitmapは連続する2進数(0または1)の列であり、各ビットの位置はオフセット(offset)であり、bitmap上でAND、OR、XORおよび他のビット操作を実行することができる.
Bitmaps使用シーン 例えば、自分のWebサイトのユーザーの最長連続アクセス日数を知りたい場合.0からカウントを開始し、ユーザーがアクセスするたびにsetbitを使用してbitビットを設定します.bitビットのindexは、(現在のunixタイムスタンプ-カウント開始時のタイムスタンプ)/(3600*24)を生成します. この方法により、各ユーザの毎日の訪問記録を取得することができる.bitcountを使用すると、特定のユーザーの訪問日数を簡単に統計できます.いくつかのbitposコマンドを使用したり、対応するビットマップを直接取得して分析したりすると、最長連続アクセス日数を簡単に算出できます. bitmapsは、通常、単一のkeyに格納されるデータが大きすぎないように、複数のkeyに分割される.keyを分割する小さなテクニックがあります.各keyはMビットビットを格納し、keyは「ビット数(bit-number)/M」で命名されます.N番目のbitビットは、keyにおける位置に対応して「ビット数(bit-number)モードM」で得られる. は、keyごとに100ビットしか格納されていないと仮定し、8303のidを持つユーザーがアクセスします.では、このユーザに対応するkeyは83(8303/100)であり、key:83では、それに対応する位置は3(8303 mod 100)であるべきである.ユーザー・アクセスを記録するには、次のコマンドを使用します:
Bitmaps共通コマンド
1.値の設定
2取得値
3 Bitmaps指定範囲値が1の個数を取得する
4 Bitmaps間の演算 bitop:2つの異なる文字列に対してビット演算を行います.実行可能な演算はAND,OR,XORおよびNOT である.
4.1 Bitmapsの交差数を計算する
4.2 Bitmapsの集計数の計算
4.3 Bitmapsの非セット数の計算
4.Bitmapsの排他的または集合の数を計算する
5 Bitmapsの最初の値がtargetBitのオフセット量を計算する bitpos:最初の値が0/1のビットの位置 を検索する.
参照元:https://redis.io/topics/data-types-intro#bitmaps
Bitmaps使用シーン
(Real time analytics of all kinds)。
ID , (Storing space efficient but high performance boolean information associated with object IDs.)。
setbit 83 3 1
Bitmaps共通コマンド
1.値の設定
:setbit key offset value
setbit ,
bit , , 0,1 。
bit ,reids 。
2取得値
:getbit key offset
getbit bit 。 bit , 0。
3 Bitmaps指定範囲値が1の個数を取得する
:bitcount key [start] [end]
4 Bitmaps間の演算
4.1 Bitmapsの交差数を計算する
:bitop and destkey key[key…]
: destkey (1 8 ) , key 。
4.2 Bitmapsの集計数の計算
:bitop or destkey key[key…]
: destkey (1 8 ) , key 。
4.3 Bitmapsの非セット数の計算
:bitop not destkey key
: destkey (1 8 ) , key 。
4.Bitmapsの排他的または集合の数を計算する
:bitop xor destkey key[key..]
: destkey (1 8 ) , key 。
5 Bitmapsの最初の値がtargetBitのオフセット量を計算する
:bitpos key targetBit [start][end]
:
参照元:https://redis.io/topics/data-types-intro#bitmaps