シーケンス
SORTコマンド操作クラス、およびリストのセットを使用してコレクションを命じ、SORTキーアルファは、辞書的に非数値に配置されています。キーDESCのSORT
パラメータによって、あなたは(ワイルドカード+名による)、でも、文字列型のハッシュの種類を並べ替えることができます
値は、後にソートを取得取得し
、ストアの保存
の最適化:ソートRedisのは、最も強力で最も複雑なコマンドの一つです。簡単にパフォーマンスのボトルネックになることができます良い使用。、nはO(N + mlogM)のコマンド時の複雑さをソート:ソートされたリストの要素の数は、要素Mの数を返します。nが、下ソートのパフォーマンス大きいです。
(小N)ソートキーとなるように要素1の個数を最小限
必要なデータ(M非常に小さい)フェッチ使用制限パラメータの後に2
大量のデータをソートする場合は、キャッシュを使用した結果としてのパラメータを格納する、3。
有効期限
失敗のために、成功のための0を1に戻すためのキー秒を期限切れ。(NOキーは期限切れの設定することはできません)。キーミリpexpire
TTLキーは、結合の残りの寿命を返し、ノーリターンが存在しない-2。パーマネント(デフォルト) -1を返します。キーPttlの
presist、それは永続的なもの、有効期限をキャンセルします。使用し、GETSETは有効期限が切れなくなります。他の命令がなくなるわけではありません。時計は、キーが変更されることになって削除されるとは思いません。
expireat、pexpireat;パラメータとして使用Unixの時間。
アプリケーション:アクセス頻度を制限する実装。(increを使用して1列、2つのリストのタイプ:記録時間、回数の差を算出します)
キャッシュを実装
サイトの負荷容量を向上させるためには、通常、あなたは訪問のいくつかの高頻度が必要ですが、CPUやIOリソースキャッシュされ、古いデータは定期的に再び更新の動作の大きな結果を消費します。例Weiboトレンド版の場合は、5分期限切れの鍵、一度再評価。
しかし、いくつかのシナリオでは、大容量のキャッシュを使用すると、長い有効期限場合には、あまりにも多くのメモリを占有し、有効期限が短い場合、キャッシュヒット率につながる可能性は低すぎると無駄のアイドルでメモリの大きな無駄です。その後:
(メモリ優先、ルールを排除する必要がある):変更maxmemoryを Redisのこの限界を超え、最大(バイト)利用可能なメモリを制限することは、重要なパラメータは、基底maxmemoryポリシー戦略を指定し、削除する必要はありません。
LRU:最低使用
業務
トランザクションは、コマンドのように、Redisのは、実行の最小単位である、コマンドのコレクションです。
マルチオープン情勢、次のコマンドは、キューに入れられます、execを提出し、キューコマンドを開始しました。トランザクションは、トランザクションを実行するためにコマンドを作ることができるので、クライアントAは、いくつかのコマンドを実行したい、クライアントがコマンドBを送信し、Aは、Bは、いくつかのコマンド、クライアントの実行に挿入されることはありません、トランザクションを開きました。
エラー処理
構文エラー、コマンド構文エラーではなく、EXEC時間があれば。
エラー時に実行し、何のロールバックがない、あなただけの自分自身の混乱を一掃することができます。
ウォッチ:トランザクションキーの変化の観察(トランザクションが一度すべての命令の実行されているので、この時点では、最終的な結果は、命令の結果に応じて次のステップに戻ることはできません。)・ウォッチは、一度1つ以上のキーをモニタすることができます、キーの一つは、すべてのキーの監視がキャンセルされます、(または削除)トランザクションの後に変更されたEXECを実行した後、実行されません。あなたがunwatchの実施を監視したくない場合は、我々は監視をキャンセルすることができます。PSは、マルチコマンドの後にexecの後に実行されます。
メッセージ通知
ページがメッセージを送信する必要がある場合、複雑な計算は、ページのレンダリングをブロックします。結果を達成するために、他の非同期プロセスを使用することを検討して、あまりにも長く待つことは避けてください。ここでは、P87を見ることができ
、拡張が容易な疎結合:あります。
Redisのタスクキューを実現します:
使用RPOPはいつも何のデータもタイムアウトを設定することができますBRpopを使用して行われていない避けるため、当然、取ることができます。時間が経つにつれて、それはnilを返します; 0は制限待ちを意味しない、永遠にブロックされた上で行っていません。
プライオリティキュー:Bpopキー[キー...] 0キーのすべての要素がブロックされていない場合は検出された複数のキー、。消費者の前でニュースキーの優先順位。
公開されたサブスクリプションモデル:
チャネルメッセージを公開取得するために発表した後、最初のサブスクリプション、チャネルにメッセージを送信します。
subcribeチャネルサブスクリプションは、唯一subcribe、ubsubbirbe、pSubcribe、punSubcribeコマンドのサブスクリプションのステータスを行うことができます。
メッセージ受信、3があります。subcribe、メッセージ、unSubcribe
規則により登録:
あなたはpSubcribeを使用することができ、ルールはグロブスタイルをサポートしています。サブスクリプションを繰り返すことができます。配信停止:pUnSubcribe(のみunsubcribe用psubcribeの共感を退会)
pSubcribeチャンネル*?
パイプライン
そして、TCPプロトコルのリンクを使用してのRedisクライアントは、ここでは全経過時間は、往復遅延になります。
(シングルスレッド理由?)マルチコマンドの実装では、実行するために(すなわち、受信結果のRedisが返さ)コマンドの完了を待つ必要があります。
基本的な通信プロトコルは、パイプラインのためのサポートを提供するのRedis、マルチホップ伝送は、使い捨て及び使い捨て導管コマンドであってもよい後者の実装で結果を返します。Redisのと通信するパイプの数を減少させることによって。第五章では、開発パイプラインにおけるプログラミング言語技術について話しました。
メモリを保存します。
キー名と値を合理化
内部コードの最適化、
それぞれについてRedisのデータ型は二つの内部コードを提供します。ハッシュタイプは、ハッシュテーブルによって達成されます。(P94)
ビュー・オブジェクト符号化、イントラ符号化された方法の
列:(エンコードREDIS_ENCODING_RAWに類似)を使用REDIS_ENCODING_EMBSTRストリングコード記憶にも基づいsdshdrを達成するが、構造は、連続したメモリ空間にあります。
ハッシュタイプ: フィールドは、ハッシュ-MAX-ziplist-エントリ数を超えていないと、フィールドの長さがハッシュ-MAX-ziplist値がZIPLISTで保存されます超えていない場合は、Use HTとZIPLISTを保存。HTハッシュテーブルが格納され、値は、O(1)時間の複雑さを達成するために割り当てることができます。redisObjectを使用しているフィールドとフィールド値は、すべての最適化は、文字列によって最適化することができます。ZIPLISTコーディングは、コンパクト読み出しの一部を犠牲に、非常に空間効率的に変更し、素子での使用にはあまり適しています。
リスト:LinkedListのZIPLIST
コレクションタイプ:HT INTSET
インデックス付きのコレクションSKIPLIST ZIPLIST