Redis:Bitmapsシーンと共通コマンドを使用する


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使用シーン
  • (Real time analytics of all kinds)。
  • ID , (Storing space efficient but high performance boolean information associated with object IDs.)。
  • 例えば、自分の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)であるべきである.ユーザー・アクセスを記録するには、次のコマンドを使用します:
  •      
    setbit 83 3 1

                           
    Bitmaps共通コマンド
    1.値の設定
      :setbit key offset value
    setbit
  • bit , , 0,1
  • bitreids

  •  
    2取得値
      :getbit key offset
    getbit bitbit0
     
    3 Bitmaps指定範囲値が1の個数を取得する
      :bitcount key [start] [end]

     
    4 Bitmaps間の演算
  • bitop:2つの異なる文字列に対してビット演算を行います.実行可能な演算はAND,OR,XORおよびNOT
  • である.
     
    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:最初の値が0/1のビットの位置
  • を検索する.bitpos key targetBit [start][end]
     
    参照元:https://redis.io/topics/data-types-intro#bitmaps