キュー、ビットマップ、HyperLogLog、ブルームフィルタ、ジオハッシュ:他のモジュールのRedis

キュー、ビットマップ、HyperLogLog、ブルームフィルタ、ジオハッシュ:他のモジュールのRedis

遅延キューイング

キューを達成するための簡単な方法:ZSETと、スコアは残り時間です。

別の簡単な方法は、あなたは、ブロッキングは、コマンドblpop、brpopを読んで使用することができますので、すぐにスリープ状態のデータを入力します読み取ることができない、とのデータが遅延を減らす、一度目を覚ますだろう、リスト内のRedisのキューを使用することです。通常のコマンドrpush、lpush、LPOP、RPOP場合は、手動で睡眠データを設定するための時間を取るべきではありません。、例外をスロータイムリーに例外をキャッチして、やり直してくださいに注意を払うだろう読んで、その後、読み込まれたスレッドが空の場合、Redisの接続がアイドル状態のリンクになっていることに注意してください。

ストリーム

これは、マルチキャストは、永続メッセージキューことができる支持体です。

ビットマップ

ビットマップ配列の性質は、バイト、文字列では、そのような利用者の出席記録の年として、スペースの大幅な節約を、保存するためにそれを使用することができ、それが365で表すことができます。月次統計の自動デエンファシスを達成するために、ユーザーが住んでいます。

こんにちは、この文字列を達成するために、各文字は、最初のバイナリ表現を出し、その後、反転フルビットマップ内に配置され、開始位置hを計算することは、設定されている:( Eが01100101 01101000で、その後、彼は01101000 + 01100101です)、1/2/4の必要があります。ビットが1に設定されています

(最初のビットが1に設定されている)setbitキー11:ビットをセット

(最初に取る)getbitキー1:誰かを取ります

全体を取る:キーを取得(それは非印字文字の組み合わせであれば、文字は16進数で表示されます)

しこり:キー設定

統計的な指示をビットマップ:

BITCOUNT数は、統計1の範囲を指定するために使用されます。

BITCOUNTキー02(番号の最初の3つの文字、文字のノートバイトではありません)

BITPOSは0又は1の第1の指定された範囲内の場所を見つけます。

(3番目の文字、最初の位置1から数えて)122キーBITPOS

ビットフィールドは、複数の時間を取るために使用することができる設定の数

組み合わせincrbyも最大値と最小滞在の範囲に亘ってカット(飽和、(オーバーフローが実行されていない)の増分はデフォルトの(オーバーフロービットが失われた)再入可能である、あなたはまた、障害ポリシーに選択することができ、オーバーフローする、増分の数を指定することができますbifield )

HyperLogLog

このような問題の場合:ウェブサイトのユーザーのアクセス統計、そのセットで、ユーザーは重いセットに行くので使用していますが、もし何十、何百万ものユーザーのスペースの無駄はあるが、統計は、絶対精度を必要としません、あなたはhyperloglogを使用することができ、それは、ディエンファシス機能を、1%未満の統計的な標準誤差を持っていますが、それはhyperloglogのみ12Kメモリの、多くのスペースを節約することができます。

pfadd鍵(格納された値)

pfcountキー(抽出された統計の数)

pfmerge結合(二組合わせ)

統計は、原則hyperloglogに基づいている:ランダムな整数のシーケンスを与え、連続する0のビットkの低い最大長を記録し、乱数の数は、kの値により推定することができます。統計の多数によって得られたより正確な値を保証するために重み構造を推定します。バレルは、単一のために、この推定値は、バケットの多数正確ではなく、それが正確になります加重します。12Kで集中的なストレージを、掛けたとき、ほとんどがレコード比較値である0の樽から来た、それは構造でスパースストレージスペースを節約できますが使用されます。

複雑さは、それは結果をキャッシュし、平均pfcount O1で、記録された呼び出しが結果を変えることができれば、リフレッシュはそれがより速くなるスパースストレージが更新されます、だけpfcountコマンドが呼び出されたときに計算されますが、すぐには起こらないだろう、高密度のストレージは遅いですが、他の態様、時間のかかるストレージ、この値が大きいと、レコードのほとんどが堆積値が変化することはありません。

ブルームフィルタ

ニュースフィード、そして私たちは、ユーザの履歴を保存しなければならない、ユーザーに同じコンテンツをプッシュすることはできませんが、レコードを見ているときは、このレコードは非常に大きいですが、需要がだけにしてすることができます、知っている必要がありますか、リストに登場していなかった登場ブルームフィルタを使用して、ブルームフィルタは、コンテンツが表示されませんが発生しました見誤ることはありませんが、チャンスは正義のない流産がなかった表示されるコンテンツがあります。

bf.addキー

bf.existsキー

キー値のbf.madd複数(S追加)

キー値のbf.mexists複数(複数決意)

ジオハッシュ

キー周辺のキーを見つける方法キー、緯度、経度、:データの部分がある場合、それぞれ、3つのフィールドがあり?あなたは、クエリが定義されているRを想定して、データベースのSQLを使用することができ、そしてないrが増加した場合、パフォーマンスは非常に限られたデータベースです。

ケーキこの、00/01/10/11のそれぞれに対して名前を付けることができ、同様に、4を切断する場合、我々は最初の緯度と経度は、デジタル、2つの類似のカットにマッピングジオハッシュアルゴリズムを使用する必要がありますデジタルバックルール、より正確な、より詳細なブロック計画にまだ近いデジタル上の2次元平面内の原点に近い経度の寸法に応じて復元することができる、いくつかのエラーがあります。素子の近傍にソートZSETにこれらの数の間ジオRedisのは、ソート機能により得ることができます。ジオRedisの近くの点、位置計算の間の点、計算点を追加するためのコマンド。

おすすめ

転載: www.cnblogs.com/shizhuoping/p/11526220.html