Redis での基本的なデータ管理

RedisRedisBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに (Introduction)

この実験 (lab) では、Redis における基本的なデータ管理テクニックを学びます。まず、カウンターやレートリミッターに適した、アトミックな INCR コマンドと DECR コマンドを使用して、数値のインクリメントとデクリメントの方法を学習します。redis-cli を使用して Redis サーバーに接続し、初期値を設定した後、それらをインクリメントおよびデクリメントし、GET コマンドで結果を確認します。

さらに、KEYS コマンドを使用して、Redis に保存されているすべてのキーを取得する方法を学習します。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL redis(("Redis")) -.-> redis/RedisGroup(["Redis"]) redis/RedisGroup -.-> redis/access_cli("Connect Using CLI") redis/RedisGroup -.-> redis/fetch_string("Get String Value") redis/RedisGroup -.-> redis/remove_key("Delete Single Key") redis/RedisGroup -.-> redis/increment_int("Increase Integer Value") redis/RedisGroup -.-> redis/decrement_int("Decrease Integer Value") subgraph Lab Skills redis/access_cli -.-> lab-552076{{"Redis での基本的なデータ管理"}} redis/fetch_string -.-> lab-552076{{"Redis での基本的なデータ管理"}} redis/remove_key -.-> lab-552076{{"Redis での基本的なデータ管理"}} redis/increment_int -.-> lab-552076{{"Redis での基本的なデータ管理"}} redis/decrement_int -.-> lab-552076{{"Redis での基本的なデータ管理"}} end

INCR/DECR による値のインクリメントとデクリメント (Increment and Decrement Values with INCR/DECR)

このステップでは、INCR コマンドと DECR コマンドを使用して、Redis に格納されている数値をインクリメントおよびデクリメントする方法を学習します。これらのコマンドはアトミック (atomic) であり、他のクライアントからの干渉なしに実行されることが保証されているため、カウンターやレートリミッターなどのタスクに適しています。

まず、ターミナルで redis-cli コマンドを使用して Redis サーバーに接続しましょう。

redis-cli

次に、mycounter という名前のキーに初期値 10 を設定します。これにより、Redis データベースにキーと値のペアが作成されます。キーは mycounter で、値は 10 です。

SET mycounter 10

キーが正常に設定されたことを確認する次の出力が表示されるはずです。

OK

INCR コマンドは、キーの値を 1 ずつインクリメントします。mycounter をインクリメントしてみましょう。

INCR mycounter

出力はインクリメントされた値になります。

(integer) 11

値を確認するには、GET コマンドを使用します。

GET mycounter

出力は次のようになります。

"11"

DECR コマンドは、キーの値を 1 ずつデクリメントします。mycounter をデクリメントしてみましょう。

DECR mycounter

出力はデクリメントされた値になります。

(integer) 10

再度、GET で値を確認します。

GET mycounter

出力は次のようになります。

"10"

キーが存在しない場合、INCR および DECR は、値 0 が含まれているかのように扱います。存在しないキー newcounter をインクリメントしてみましょう。

INCR newcounter

出力は次のようになります。

(integer) 1

次に、newcounter の値を確認します。

GET newcounter

出力は次のようになります。

"1"

同様に、存在しないキーをデクリメントすると、0 として扱われ、-1 にデクリメントされます。

DECR anothercounter

出力は次のようになります。

(integer) -1
GET anothercounter

出力は次のようになります。

"-1"

最後に、redis-cli を終了します。

exit

コマンド履歴が適切に記録されるように、コマンドの完了後に redis-cli を終了することが重要です。

KEYS によるすべてのキーの取得 (Retrieve All Keys with KEYS)

このステップでは、KEYS コマンドを使用して、Redis に格納されているすべてのキーを取得する方法を学習します。KEYS は開発やデバッグには役立ちますが、すべてのキーを反復処理する際にサーバーをブロックする可能性があるため、一般的に大規模なデータセットを持つ本番環境 (production environment) では推奨されません。

まず、redis-cli を使用して Redis サーバーに接続します。

redis-cli

前のステップでは、mycounternewcounter、および anothercounter といういくつかのキーを作成しました。例をより面白くするために、さらにいくつかのキーを追加しましょう。

SET user:1000:name "John"
SET user:1000:age 30
SET user:1001:name "Jane"

次に、KEYS コマンドを * パターンで使用して、データベース内のすべてのキーを取得します。

KEYS *

出力は、すべてのキーのリストになります。

1) "anothercounter"
2) "user:1000:age"
3) "user:1001:name"
4) "mycounter"
5) "newcounter"
6) "user:1000:name"

キーの順序は異なる場合があります。

パターンを使用して、特定のパターンに一致するキーを取得することもできます。たとえば、user: で始まるすべてのキーを取得するには、次のコマンドを使用します。

KEYS user:*

出力は次のようになります。

1) "user:1000:age"
2) "user:1001:name"
3) "user:1000:name"

別の例として、counter を含むすべてのキーを取得するには、次のコマンドを使用します。

KEYS *counter*

出力は次のようになります。

1) "anothercounter"
2) "mycounter"
3) "newcounter"

大規模なデータベースで KEYS * を使用すると、パフォーマンスに影響を与える可能性があることに注意してください。本番環境 (production environment) では、代わりに SCAN を使用することを検討してください。SCAN は、ノンブロッキング (non-blocking) な方法でキースペース (keyspace) を反復処理します。

最後に、redis-cli を終了します。

exit

TYPE によるデータ型の確認 (Check Data Type with TYPE)

このステップでは、TYPE コマンドを使用して、Redis に格納されているキーのデータ型を確認する方法を学習します。Redis は、文字列 (string)、リスト (list)、セット (set)、ソート済みセット (sorted set)、ハッシュ (hash) など、さまざまなデータ型をサポートしています。キーのデータ型を理解することは、適切な操作を実行するために重要です。

まず、redis-cli を使用して Redis サーバーに接続します。

redis-cli

前のステップでは、異なる値を持ついくつかのキーを作成しました。それらのデータ型を確認しましょう。

まず、mycounter キーのデータ型を確認します。

TYPE mycounter

出力は次のようになります。

string

これは、mycounter が数値を含んでいても、文字列 (string) として格納されていることを示しています。Redis は、SET を使用すると、数値 (numerical value) を自動的に文字列 (string) に変換します。

次に、user:1000:name キーのデータ型を確認します。

TYPE user:1000:name

出力は次のようになります。

string

これも、user:1000:name が文字列 (string) として格納されていることを示しています。

次に、存在しないキー (たとえば nonexistentkey) のデータ型を確認します。

TYPE nonexistentkey

出力は次のようになります。

none

これは、キーがデータベースに存在しないことを示しています。

データ型をさらに説明するために、リスト (list) を作成しましょう。

LPUSH mylist "item1"
LPUSH mylist "item2"

次に、mylist のデータ型を確認します。

TYPE mylist

出力は次のようになります。

list

これは、mylist がリスト (list) として格納されていることを確認します。

同様に、セット (set)、ソート済みセット (sorted set)、ハッシュ (hash) などの他のデータ型を作成し、TYPE コマンドを使用してそれらの型を確認できます。例:

SADD myset "member1"
SADD myset "member2"
TYPE myset

出力は次のようになります。

set
ZADD mysortedset 1 "element1"
ZADD mysortedset 2 "element2"
TYPE mysortedset

出力は次のようになります。

zset
HSET myhash field1 "value1"
HSET myhash field2 "value2"
TYPE myhash

出力は次のようになります。

hash

最後に、redis-cli を終了します。

exit

FLUSHDB によるデータのクリア (Clear Data with FLUSHDB)

このステップでは、FLUSHDB コマンドを使用して、現在選択されている Redis データベースからすべてのデータをクリアする方法を学習します。このコマンドは、開発またはテスト中にデータベースをリセットするのに役立ちます。本番環境 (production environment) では、このコマンドの使用には注意してください。データベース内のすべてのデータが完全に削除されます。

まず、redis-cli を使用して Redis サーバーに接続します。

redis-cli

データベースをフラッシュする前に、キーが存在することを確認しましょう。KEYS * コマンドを使用します。

KEYS *

前のステップで作成した mycounternewcounteruser:1000:namemylist などのキーのリストが表示されるはずです。

次に、FLUSHDB コマンドを実行します。

FLUSHDB

出力は次のようになります。

OK

これは、データベースが正常にフラッシュされたことを示しています。

データベースが空になったことを確認するには、KEYS * コマンドを再度使用します。

KEYS *

出力は空のリストになります。

(empty array)

これは、すべてのキーがデータベースから削除されたことを確認します。

FLUSHDB は、現在選択されているデータベースのみをクリアすることを理解することが重要です。Redis は複数のデータベース (デフォルトでは 0 から 15 までの番号が付けられています) をサポートしています。すべてのデータベースをクリアする場合は、FLUSHALL コマンドを使用できます。ただし、意図しないデータ損失を避けるために、この実験 (Lab) では FLUSHALL は使用しません。

最後に、redis-cli を終了します。

exit

まとめ (Summary)

この実験 (Lab) では、Redis の基本的なデータ管理テクニックを学習しました。具体的には、カウンターやレートリミッター (rate limiter) の実装に役立つアトミックな INCR コマンドと DECR コマンドを使用して、数値 (numerical value) をインクリメントおよびデクリメントする練習をしました。また、キーが存在しない場合、これらのコマンドはキーに値 0 が含まれているかのように扱うことも学習しました。

さらに、Redis に格納されているすべてのキーを取得するための KEYS コマンドを紹介しました。開発やデバッグには役立ちますが、一般的に、大規模なデータセットを持つ本番環境 (production environment) では推奨されません。最後に、データ型を確認し、データベースをクリアする方法を学習しました。