ホームページ >データベース >Redis >Redis キートラバーサルとデータベース管理の詳細な説明

Redis キートラバーサルとデータベース管理の詳細な説明

WBOY
WBOY転載
2022-10-10 17:23:481612ブラウズ

この記事では、Redis に関する関連知識を提供します。主にトラバーサル キーとデータベース管理に関する関連コンテンツを紹介します。一緒に見ていきましょう。皆様のお役に立てれば幸いです。

Redis キートラバーサルとデータベース管理の詳細な説明

#推奨学習:

Redis ビデオ チュートリアル

1 キーの走査

#1.1 フルボリュームキーの走査

すべてのキーを完全に走査する必要がある場合は、keys pattern コマンドを使用する必要があります。このコマンドはパターン マッチングをサポートしています

127.0.0.1:6379> mset name luke neme josh
OK

次の場合すべてのキーを走査するには、コマンド キーを使用できます。 *

127.0.0.1:6379> keys *
1) "name"
2) "neme"

パターンでは、グロブ スタイルのワイルドカードが使用されます。

  • * は、任意の文字

    # を表します。 ####?文字を表します
  • [] は文字の一部の一致を表します。たとえば、[a,b] は 2 つの文字 a と b の一致を意味し、[1-10] は 1 からの任意の数値の一致を意味します。から 10
  • \x はエスケープを意味します。* 文字と一致する必要がある場合は、それをエスケープする必要があります。以下:
  • 127.0.0.1:6379> keys n[a,e]me
    1) "name"
    2) "neme"
  • 次のように操作することもできます

    127.0.0.1:6379> keys n?me
    1) "name"
    2) "neme"

    ただし、redis データベースに多数のキーがある場合、キーによって redis がブロックされます。
キーをトラバースする必要がある場合はどうすればよいでしょうか?

通常、本番環境はマルチノードであるため、データを横断するための外部サービスを提供しない Redis スレーブ ノードを見つけることができますが、データの量が大きい場合は、それでも Redis がブロックされます。スレーブ ノードの場合、影響を受けるマスター/スレーブ レプリケーションのみです。

redis にキーがそれほど多くないことがわかっている場合は、それを直接実行できます。

1.2 プログレッシブ トラバーサル

プログレッシブ トラバーサルでは、毎回キーの一部を走査し、戻って後続のデータを走査し続けます。次回。このようにして、Redis サービスをブロックすることなくすべてのデータを通過できます。

scan cursor [MATCH pattern] [COUNT count]
パラメータは次のように説明されています:

cursor は必須パラメータです。これは、トラバーサルが行われた場所を示すカーソルです。次回、それが開始されます。このカーソルから 0 が返された場合、トラバーサルが完了したことを意味します。

MATCH パターンはオプションのパラメーターであり、キーのパターンと同じです。
  • COUNT カウントは、走査するキーの数を示します。デフォルトは 10 ですが、実際の状況に応じて増やすことができます
  • 127.0.0.1:6379> mset a 1 b 1 c 1 d 1 e 1 f 1 g 1 h 1 i 1 g 1 k 1 l 1 m 1 n 1 o 1 p 1 q 1 r 1 s 1 t 1 u 1 v 1 w 1 x 1 y 1 z 1
    OK

    走査にスキャンを使用します。最初の実行では次の値が返されます。
  • 127.0.0.1:6379> scan 0
    1) "1"
    2)  1) "l"
        2) "f"
        3) "k"
        4) "y"
        5) "c"
        6) "e"
        7) "w"
        8) "d"
        9) "b"
       10) "o"
       11) "q"
  • 2 回目は初回に返された 1 トラバース時は 10 キーまでトラバースできます

    127.0.0.1:6379> scan 1
    1) "23"
    2)  1) "v"
        2) "u"
        3) "z"
        4) "g"
        5) "n"
        6) "s"
        7) "i"
        8) "a"
        9) "r"
       10) "t"

    3 回目は 2 回目に返された 23 を使用してトラバースしますリターンが 0 の場合はトラバースが完了したことを意味します
  • 127.0.0.1:6379> scan 23
    1) "0"
    2) 1) "x"
       2) "h"
       3) "m"
       4) "p"
同時に、ハッシュ型の hscan 、セット型の sscan 、順序付きセットの zscan もあり、使用方法は scan と同じです

2 データベース管理

データベース操作用の Redis A コマンドは他にもいくつかあります: dbsize、select、flushdb/flushall

#2.1 データベースの切り替え、select

#select dbIndexdbIndex は、対応するデータベースのシリアル番号です。デフォルトの Redis 構成には 16 のデータベースがあり、選択したデータベース番号に切り替えることができます。

例として、デフォルトのデータベース番号 0

127.0.0.1:6379> set name luke
OK
にキーを設定し、データベース番号 1 に切り替えてキーを取得しますが、キーが取得できず、差異があることがわかります。 Redis サービス内のデータベース間では相互運用できません。
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> get name
(nil)
では、複数の Redis として使用できるのでしょうか? もちろん、使用できません。ライブラリは増えていますが、redis はシングルスレッドなので、実際には CPU であり、データベース内のコマンドの実行が非常に遅い場合、他のライブラリも影響を受けます。特定のライブラリを使用している開発者にとって、問題が何であるかを分析するのは難しい場合があります。

2.2lushall/flushdb

flushallとflushdbの違いは、flushallはすべてのライブラリのすべてのデータをクリアするのに対し、flushdbはクリアするだけであることです。現在のデータベース。

これは理解するのが簡単なので、例は示しませんが、これら 2 つのコマンドはすべてのデータを消去するため、誤った操作をすると悲惨な結果になることに注意してください。また、キーが多すぎると、redis もブロックされるため、これら 2 つのコマンドを使用する場合は注意が必要です。

推奨される学習: Redis ビデオ チュートリアル

以上がRedis キートラバーサルとデータベース管理の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はjuejin.imで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。