Redisシステム学習四、データ構造を超える
5886 ワード
5種類のデータ構造がRedisの基礎を構成しており,他にも特定のデータ構造に関連付けられていない命令が多い.info、select、flushdb、multi、exec、discard、watch、keysというコマンドを見たことがあります.この章では、他の重要なコマンドを見てみましょう.
使用期限(Expiration)
Redisでは、キーワードの使用期限をマークできます.Unixタイムスタンプ形式(1970,001から)の絶対時間を与えるか、秒ベースの生存時間を与えることができます.これはキーワードベースのコマンドなので、キーワードがどのタイプのデータ構造を表すかは気にしません.
expire pages:about 30 expire pages:about 1356933600
最初のコマンドは、関連する値を含むキーワードを30秒後に削除し、2番目のコマンドは2012年12月31日午前12時にキーワードを削除します.
これにより、Redisは理想的なバッファエンジンになります.ttlコマンドでは、キーワードがどのくらい生き残るかを知ることができます.persistコマンドでは、キーワードの使用期限を削除できます.
ttl pages:about persist pages:about
最後に特殊な文字列コマンドがあります.setexコマンドを使用すると、個別の原子コマンドで文字列値を設定し、生存期間を指定できます(これは何よりも便利です).
setex page:about 30'hellowolrd'は、set page:about'helloworld'を結合する2つのコマンドに相当します.expire page:about 30
パブリッシュとサブスクリプション
Redisのリストデータ構造にはblpopコマンドとbrpopコマンドがあり、リストから最初の(または最後の)要素を返して削除したり、1つの要素が操作できるまで詰まったりすることができます.簡単なキューを実現するために使用できます
また、Redisはメッセージの公開とチャンネルの購読に一流のサポートを持っています.2番目のredis-cliウィンドウを開いて、これらの機能を試してみてください.最初のウィンドウでチャンネルを購読する(A)
subscribe A
購読した情報に返信します.別のウィンドウで、Aチャンネルにメッセージを送信します.
publish A'ねえit's A'
このとき、Aチャンネルを購読している人はAチャンネルが発表したメッセージを受け取るので、特に自慢しなければならないのは、複数のチャンネルを同時に購読することができることです.
subscribe A B Cはpingdao*
とてもつり上がっています!
監視と遅延ログ
優れたデバッグツール、monitor.モニタコマンドでは、Redsiが何をしているかを確認できます.しかし、デバッグと開発使用に限られ、生産環境を置かないでください.理由:自然に余分な費用がかかります.
モニタコマンドとともに、Redisにはslowlogコマンドがあり、優れたパフォーマンスプロファイルツールです.一定数の微妙なコマンドを記録します.
上記のコマンドは、ソートされたレコードをページングする方法(
idでこれらの問題をソートしたいという強い感じがするかもしれませんが(デフォルトのソートはそうです)、問題の深刻さでこれらの問題をソートする可能性があります.そのため,Redisがどのパターンを用いてソートするかを教える.まず、意味のある結果を見るために、より多くのデータを追加します.
問題の重大度によってこれらのBugを降順にソートするには、次のようにします.
Redisは、パターンの
Redisでは、何千ものキーワードがありますが、上記のような関係は混乱を引き起こします.幸いなことに、
すべてのことは管理が容易になるだけでなく、
同じ値の代替が現れたが、Redisは
大きな集合の場合、
私たちが見た
この章では、主に非特定のデータ構造に関連付けられたコマンドに注目します.他のことと同じように、それらの使用は状況によって異なります.プログラムやプロパティを構築する場合、使用期間、パブリケーション、サブスクリプション、ソートなどの機能は使用されない場合があります.しかし、これらの機能の存在を知るのは良いです.そして、私たちもいくつかの命令に触れただけです.さらに多くのコマンドがあります.この本を消化して理解したら、完全なコマンドリストを参照する価値があります.
\clearpage
使用期限(Expiration)
Redisでは、キーワードの使用期限をマークできます.Unixタイムスタンプ形式(1970,001から)の絶対時間を与えるか、秒ベースの生存時間を与えることができます.これはキーワードベースのコマンドなので、キーワードがどのタイプのデータ構造を表すかは気にしません.
expire pages:about 30 expire pages:about 1356933600
最初のコマンドは、関連する値を含むキーワードを30秒後に削除し、2番目のコマンドは2012年12月31日午前12時にキーワードを削除します.
これにより、Redisは理想的なバッファエンジンになります.ttlコマンドでは、キーワードがどのくらい生き残るかを知ることができます.persistコマンドでは、キーワードの使用期限を削除できます.
ttl pages:about persist pages:about
最後に特殊な文字列コマンドがあります.setexコマンドを使用すると、個別の原子コマンドで文字列値を設定し、生存期間を指定できます(これは何よりも便利です).
setex page:about 30'hellowolrd'は、set page:about'helloworld'を結合する2つのコマンドに相当します.expire page:about 30
パブリッシュとサブスクリプション
Redisのリストデータ構造にはblpopコマンドとbrpopコマンドがあり、リストから最初の(または最後の)要素を返して削除したり、1つの要素が操作できるまで詰まったりすることができます.簡単なキューを実現するために使用できます
また、Redisはメッセージの公開とチャンネルの購読に一流のサポートを持っています.2番目のredis-cliウィンドウを開いて、これらの機能を試してみてください.最初のウィンドウでチャンネルを購読する(A)
subscribe A
購読した情報に返信します.別のウィンドウで、Aチャンネルにメッセージを送信します.
publish A'ねえit's A'
このとき、Aチャンネルを購読している人はAチャンネルが発表したメッセージを受け取るので、特に自慢しなければならないのは、複数のチャンネルを同時に購読することができることです.
subscribe A B Cはpingdao*
とてもつり上がっています!
監視と遅延ログ
優れたデバッグツール、monitor.モニタコマンドでは、Redsiが何をしているかを確認できます.しかし、デバッグと開発使用に限られ、生産環境を置かないでください.理由:自然に余分な費用がかかります.
モニタコマンドとともに、Redisにはslowlogコマンドがあり、優れたパフォーマンスプロファイルツールです.一定数の微妙なコマンドを記録します.
config set slowlog-log-slower-than 0
slowlog get
slowlog get 10
对于每个被你键入的命令,你应该查看4个参数:
1.一个自动递增的id
2.一个Unix时间戳,表示命令开始运行的时间
3.一个微妙级的时间,显示命令运行的总时间
4.该命令以及所带参数
延迟日志保存在内存中, 因此在生产环境中运行(即使有一个低阀值)也应该不是一个问题。默认情况下,它将会追踪最近的1024个日志
排序
Sort 命令是Redis最强大的命令之一。它让你可以在一个列表、集合或者分类集合里对值进行排序(分类集合是通过标记来进行排序,而不是集合里的成员)。
rpush users:leto:guesses 5 9 10 2 4 10 19 2
sort users:leto:guesses
sadd friends:ghanima leto paul chani jessica alia duncan
sort friends:ghanima limit 0 3 desc alpha
上記のコマンドは、ソートされたレコードをページングする方法(
limit
を介して)、降順ソートの結果を返す方法(desc
を介して)、数値シーケンスの代わりに辞書シーケンスでソートする方法(alpha
を介して)を示しています.sort
命令の真の力は、参照オブジェクトに基づいてソートする能力である.以前は,リスト,集合,分類集合が他のRedisオブジェクトを参照するのによく用いられていることを説明し,sort
コマンドはこれらの関係を解くことができ,潜在値によってソートすることができる.たとえば、Bugトラッカーを使用して、ユーザーにさまざまな問題があることを示すとします.監視中の問題を追跡するには、集合データ構造を使用します.sadd watch:leto 12339 1382 338 9338
idでこれらの問題をソートしたいという強い感じがするかもしれませんが(デフォルトのソートはそうです)、問題の深刻さでこれらの問題をソートする可能性があります.そのため,Redisがどのパターンを用いてソートするかを教える.まず、意味のある結果を見るために、より多くのデータを追加します.
set severity:12339 3
set severity:1382 2
set severity:338 5
set severity:9338 4
問題の重大度によってこれらのBugを降順にソートするには、次のようにします.
sort watch:leto by severity:* desc
Redisは、パターンの
*
(by
を介して)をリスト(集合または分類集合)に格納された値で置き換える.これによりキーワード名が作成され、Redisは実際の値をクエリーしてソートされます.Redisでは、何千ものキーワードがありますが、上記のような関係は混乱を引き起こします.幸いなことに、
sort
コマンドは、ハッシュ・データ構造およびその関連ドメインでも動作します.大量の高レベルキーワードを持つよりも、ハッシュを使用できます.hset bug:12339 severity 3
hset bug:12339 priority 1
hset bug:12339 details "{id: 12339, ....}"
hset bug:1382 severity 2
hset bug:1382 priority 2
hset bug:1382 details "{id: 1382, ....}"
hset bug:338 severity 5
hset bug:338 priority 3
hset bug:338 details "{id: 338, ....}"
hset bug:9338 severity 4
hset bug:9338 priority 2
hset bug:9338 details "{id: 9338, ....}"
すべてのことは管理が容易になるだけでなく、
severity
またはpriority
でソートできます.また、sort
コマンドでどのドメインのデータを取得するかを教えてくれます.sort watch:leto by bug:*->priority get bug:*->details
同じ値の代替が現れたが、Redisは
->
シンボルを識別し、ハッシュで指定されたドメインを表示することもできる.get
パラメータも含まれており、ここでは値の代替やドメインの表示を行い、Bugの詳細(detailsドメインのデータ)を取得します.大きな集合の場合、
sort
コマンドの実行が遅くなる可能性があります.良いニュースは、sort
コマンドの出力を格納することです.sort watch:leto by bug:*->priority get bug:*->details store watch_by_priority:leto
私たちが見た
expiration
コマンドを使用して、sort
コマンドのstore
能力を組み合わせて、これは素晴らしい組み合わせです.小結
この章では、主に非特定のデータ構造に関連付けられたコマンドに注目します.他のことと同じように、それらの使用は状況によって異なります.プログラムやプロパティを構築する場合、使用期間、パブリケーション、サブスクリプション、ソートなどの機能は使用されない場合があります.しかし、これらの機能の存在を知るのは良いです.そして、私たちもいくつかの命令に触れただけです.さらに多くのコマンドがあります.この本を消化して理解したら、完全なコマンドリストを参照する価値があります.
\clearpage