検索
ホームページデータベースRedisすべてのキーを走査する Redis メソッド

Redis key コマンドは、redis キーを管理するために使用されます。この記事では、Redis ですべてのキーを走査する 2 つの方法、KEYS パターンと SCAN カーソルを紹介します。

すべてのキーを走査する Redis メソッド

すべての Redis キーまたは指定されたモードのキーを走査する必要がある場合、最初に思い浮かぶのは KEYS コマンドです。公式 Web サイトには KEYS コマンドに関するヒントが記載されています: KEYS は非常に高速です。たとえば、Redis が 100 万個のキーを持つデータベースでクエリを実行するのに 40 ミリ秒かかります。ただし、大規模なデータベースで使用すると、依然としてパフォーマンスの問題が発生する可能性があるため、データ セットから特定の KEY を見つける必要がある場合は、代わりに Redis のコレクション構造 SETS を使用することをお勧めします。

KEYS コマンドの使用は非常に簡単です。

KEYS pattern

ただし、KEYS コマンドは一致するすべてのキーを一度に返すため、redis にキーが多すぎると、メモリ消費と redis サーバーに潜在的な危険が生じます。

Redis 2.8 の場合上記のバージョンでは、キーをトラバースするためのより優れたコマンド SCAN が提供されています。このコマンドの基本形式は:

redis> MSET one 1 two 2 three 3 four 4
OK
redis> KEYS *o*
1) "four"
2) "one"
3) "two"
redis> KEYS t??
1) "two"
redis> KEYS *
1) "four"
2) "three"
3) "one"
4) "two"
redis>

SCAN です。各実行では少数の要素のみが返されるため、運用環境で使用できます。サーバーをブロックする可能性がある KEYS または SMEMBERS コマンドなどの問題。

SCAN コマンドはカーソルベースの反復子です。これは、コマンドが呼び出されるたびに、前の反復プロセスを継続するために、前の呼び出しによって返されたカーソルを呼び出しのカーソル パラメーターとして使用する必要があることを意味します。

When SCAN のカーソル パラメーターコマンド (カーソルなど) 0 に設定すると、サーバーは新しい反復を開始し、サーバーが値 0 のカーソルをユーザーに返すと、反復が終了したことを意味します。

簡単な反復のデモ:

SCAN cursor [MATCH pattern] [COUNT count]

上の例では、最初の反復ではカーソルとして 0 を使用し、新しい反復の開始を示します。 2 回目の反復では、最初の反復で返されたカーソル 17 を新しい反復パラメーターとして使用します。

明らかに、SCAN コマンドの戻り値は 2 つの要素を含む配列です。最初の配列要素は次の反復で使用される新しいカーソルで、2 番目の配列要素は別の配列です。この配列には、要素が反復されます。

注: 返されるカーソルは、必ずしもインクリメントしているわけではありません。返されるカーソルは、前のカーソルよりも小さくなる可能性があります。

SCAN コマンドが 2 回目に呼び出されるとき、コマンドはカーソル 0 を返します。これは、反復が終了し、データ セット全体が完全に走査されたことを示します。

完全な反復: カーソルとして 0 を使用して新しい反復を開始し、コマンドがカーソル 0 を返すまで SCAN コマンドを呼び出し続けます。このプロセスを完全なトラバーサルと呼びます。

SCAN 増分反復コマンドは、各実行で指定された数の要素が返されることを保証するものではなく、ゼロ要素を返す場合もありますが、コマンドによって返されるカーソルが 0 でない限り、アプリケーションはそのようなことを行うべきではありません。反復を完了したものとして扱います。

ただし、コマンドによって返される要素の数は常に特定のルールに準拠します。大規模なデータ セットの場合、増分反復コマンドは毎回最大数十の要素を返す可能性がありますが、十分に小さいデータ セットの場合は、 、すべてのキーが 1 回の反復で返される可能性があります

COUNT オプション

各反復で返される要素の数を保証しない増分反復コマンドの場合、動作に COUNT オプションを使用できます。コマンドをある程度調整しました。 COUNT オプションの目的は、各反復でデータ セットから返される要素の数をユーザーが反復コマンドに指示できるようにすることです。 COUNT オプションの使用は、増分反復コマンドのヒントと同等であり、ほとんどの場合、このヒントは戻り値の数を制御する上でより効果的です。

注: COUNT オプションは返されるキーの数を厳密に制御するものではなく、大まかな制約であるとしか言えません。各反復で同じ COUNT 値を使用する必要はありません。ユーザーは必要に応じて各反復の COUNT 値を変更できます。次の反復では、最後の反復から返されたカーソルを使用することを忘れないでください。

MATCH オプション

KEYS コマンドと同様に、増分反復コマンドは MATCH パラメーターを指定することで実装されます。グロブスタイルのモード パラメーターを指定すると、コマンドは指定されたモードのみを返します。要素。

MATCH オプションの要素のパターン マッチングは、コマンドがデータ セットから要素を取得した後、要素をクライアントに返すまでの期間中に実行されます。反復データセットが一致した場合、要素を返さずに反復コマンドが複数回実行される可能性があります。

以下はこの状況の例です:

redis 127.0.0.1:6379> scan 0
1) "17"
2)  1) "key:12"
    2) "key:8"
    3) "key:4"
    4) "key:14"
    5) "key:16"
    6) "key:17"
    7) "key:15"
    8) "key:10"
    9) "key:3"
   10) "key:7"
   11) "key:1"
redis 127.0.0.1:6379> scan 17
1) "0"
2) 1) "key:5"
   2) "key:18"
   3) "key:0"
   4) "key:2"
   5) "key:19"
   6) "key:13"
   7) "key:6"
   8) "key:9"
   9) "key:11"

ご覧のとおり、上記の反復のほとんどは要素を返しません。最後の反復では、COUNT オプションのパラメーターを 1000 に設定して、コマンドがより多くの要素を返すように、この反復でより多くの要素を強制的にスキャンします。

SCAN のセキュリティに基づいて、運用環境では KEYS の代わりに SCAN コマンドを使用することをお勧めします。ただし、このコマンドはバージョン 2.8.0 以降に追加されたものであることに注意してください。このバージョンよりも古い場合は、Redis をアップグレードする必要があります。

以下では、PHP コードを使用して SCAN コマンドの使用方法を示しています:

redis 127.0.0.1:6379> scan 0 MATCH *11*
1) "288"
2) 1) "key:911"
redis 127.0.0.1:6379> scan 288 MATCH *11*
1) "224"
2) (empty list or set)
redis 127.0.0.1:6379> scan 224 MATCH *11*
1) "80"
2) (empty list or set)
redis 127.0.0.1:6379> scan 80 MATCH *11*
1) "176"
2) (empty list or set)
redis 127.0.0.1:6379> scan 176 MATCH *11* COUNT 1000
1) "0"
2)  1) "key:611"
    2) "key:711"
    3) "key:118"
    4) "key:117"
    5) "key:311"
    6) "key:112"
    7) "key:111"
    8) "key:110"
    9) "key:113"
   10) "key:211"
   11) "key:411"
   12) "key:115"
   13) "key:116"
   14) "key:114"
   15) "key:119"
   16) "key:811"
   17) "key:511"
   18) "key:11"
redis 127.0.0.1:6379>

実行結果:

[root@localhost php]# /usr/local/php/bin/php scan.php 
bm
bm2
h1
name
bit
bm1
places
cities
hhl
---------------------------------------------------------------------------------
bm
bm2
h1
name
bit
bm1
places
cities
hhl

注意:如果php执行报错 请升级到较新版本的Redis扩展。

更多redis知识请关注redis入门教程栏目。

以上がすべてのキーを走査する Redis メソッドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事はCSDNで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
Redis:アプリケーションのパフォーマンスとスケーラビリティの向上Redis:アプリケーションのパフォーマンスとスケーラビリティの向上Apr 17, 2025 am 12:16 AM

Redisは、データをキャッシュし、分散ロックとデータの持続性を実装することにより、アプリケーションのパフォーマンスとスケーラビリティを向上させます。 1)キャッシュデータ:Redisを使用して頻繁にアクセスしたデータをキャッシュして、データアクセス速度を向上させます。 2)分散ロック:Redisを使用して分散ロックを実装して、分散環境での操作のセキュリティを確保します。 3)データの持続性:データの損失を防ぐために、RDBおよびAOFメカニズムを介してデータセキュリティを確保します。

Redis:データモデルと構造の調査Redis:データモデルと構造の調査Apr 16, 2025 am 12:09 AM

Redisのデータモデルと構造には、5つの主要なタイプが含まれます。1。文字列:テキストまたはバイナリデータの保存に使用され、原子操作をサポートします。 2。リスト:キューとスタックに適した注文された要素コレクション。 3.セット:順序付けられていない一意の要素セット、セット操作をサポートします。 4。注文セット(sortedset):ランキングに適したスコアを持つ一意の要素セット。 5。ハッシュテーブル(ハッシュ):オブジェクトの保存に適したキー価値ペアのコレクション。

Redis:データベースアプローチの分類Redis:データベースアプローチの分類Apr 15, 2025 am 12:06 AM

Redisのデータベースメソッドには、メモリ内データベースとキー価値ストレージが含まれます。 1)Redisはデータをメモリに保存し、速く読み取り、書き込みます。 2)キー価値のペアを使用してデータを保存し、キャッシュやNOSQLデータベースに適したリスト、コレクション、ハッシュテーブル、注文コレクションなどの複雑なデータ構造をサポートします。

なぜRedisを使用するのですか?利点と利点なぜRedisを使用するのですか?利点と利点Apr 14, 2025 am 12:07 AM

Redisは、高速パフォーマンス、リッチデータ構造、高可用性とスケーラビリティ、持続性能力、幅広いエコシステムサポートを提供するため、強力なデータベースソリューションです。 1)非常に速いパフォーマンス:Redisのデータはメモリに保存され、非常に速い読み取り速度と書き込み速度が高く、高い並行性と低レイテンシアプリケーションに適しています。 2)豊富なデータ構造:さまざまなシナリオに適したリスト、コレクションなど、複数のデータ型をサポートします。 3)高可用性とスケーラビリティ:マスタースレーブの複製とクラスターモードをサポートして、高可用性と水平スケーラビリティを実現します。 4)持続性とデータセキュリティ:データの整合性と信頼性を確保するために、データの持続性がRDBとAOFを通じて達成されます。 5)幅広い生態系とコミュニティのサポート:巨大なエコシステムとアクティブなコミュニティにより、

NOSQLの理解:Redisの重要な機能NOSQLの理解:Redisの重要な機能Apr 13, 2025 am 12:17 AM

Redisの主な機能には、速度、柔軟性、豊富なデータ構造のサポートが含まれます。 1)速度:Redisはメモリ内データベースであり、読み取り操作はほとんど瞬間的で、キャッシュとセッション管理に適しています。 2)柔軟性:複雑なデータ処理に適した文字列、リスト、コレクションなど、複数のデータ構造をサポートします。 3)データ構造のサポート:さまざまなビジネスニーズに適した文字列、リスト、コレクション、ハッシュテーブルなどを提供します。

Redis:主要な機能を特定しますRedis:主要な機能を特定しますApr 12, 2025 am 12:01 AM

Redisのコア関数は、高性能のメモリ内データストレージおよび処理システムです。 1)高速データアクセス:Redisはデータをメモリに保存し、マイクロ秒レベルの読み取り速度と書き込み速度を提供します。 2)豊富なデータ構造:文字列、リスト、コレクションなどをサポートし、さまざまなアプリケーションシナリオに適応します。 3)永続性:RDBとAOFを介してディスクにデータを持続します。 4)サブスクリプションを公開:メッセージキューまたはリアルタイム通信システムで使用できます。

Redis:一般的なデータ構造のガイドRedis:一般的なデータ構造のガイドApr 11, 2025 am 12:04 AM

Redisは、次のようなさまざまなデータ構造をサポートしています。1。文字列、単一価値データの保存に適しています。 2。キューやスタックに適したリスト。 3.非重複データの保存に使用されるセット。 4。ランキングリストと優先キューに適した注文セット。 5。オブジェクトまたは構造化されたデータの保存に適したハッシュテーブル。

Redisカウンターを実装する方法Redisカウンターを実装する方法Apr 10, 2025 pm 10:21 PM

Redisカウンターは、R​​edisキー価値ペアストレージを使用して、カウンターキーの作成、カウントの増加、カウントの減少、カウントのリセット、およびカウントの取得など、カウント操作を実装するメカニズムです。 Redisカウンターの利点には、高速速度、高い並行性、耐久性、シンプルさと使いやすさが含まれます。ユーザーアクセスカウント、リアルタイムメトリック追跡、ゲームのスコアとランキング、注文処理などのシナリオで使用できます。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール