序章

Redis は、オープンソースのメモリ内Key-Valueデータストアです。 Redis hash は、文字列フィールドと文字列値の間のマッピングを表すデータ型です。 ハッシュは多くのフィールドと値のペアを保持でき、多くのスペースを占有しないように設計されているため、データオブジェクトを表すのに理想的です。 たとえば、ハッシュは顧客を表し、nameaddressemailcustomer_idなどのフィールドが含まれる場合があります。

このチュートリアルでは、ハッシュの作成からハッシュ内に保持されているデータの取得と削除まで、Redisでハッシュを管理する方法について説明します。

このガイドの使用方法

このガイドは、自己完結型の例を含むチートシートとして作成されています。 完了しようとしているタスクに関連するセクションにジャンプすることをお勧めします。

このガイドに示されているコマンドは、Redisバージョン4.0.9を実行しているUbuntu18.04サーバーでテストされています。 同様の環境をセットアップするには、 Ubuntu18.04にRedisをインストールして保護する方法に関するガイドのステップ1に従うことができます。 これらのコマンドが、Redisコマンドラインインターフェイスであるredis-cliを使用して実行することにより、どのように動作するかを示します。 別のRedisインターフェース(たとえば、 Redli )を使用している場合、特定のコマンドの正確な出力が異なる場合があることに注意してください。

または、マネージドRedisデータベースインスタンスをプロビジョニングしてこれらのコマンドをテストすることもできますが、データベースプロバイダーが許可する制御レベルによっては、このガイドの一部のコマンドが説明どおりに機能しない場合があることに注意してください。 DigitalOcean管理対象データベースをプロビジョニングするには、管理対象データベースの製品ドキュメントに従ってください。 次に、TLSを介して管理対象データベースに接続するには RedliまたはTLSトンネルを設定する必要があります。

このページに埋め込まれているインタラクティブ端末を使用して、このチュートリアルのサンプルRedisコマンドを試すこともできます。 次のLaunch an Interactive Terminal!ボタンをクリックして開始します。

ハッシュの作成

ハッシュを作成するには、hsetコマンドを実行します。 このコマンドは、ハッシュキーの名前、フィールド文字列、および対応する値の文字列を引数として受け入れます。

  1. hset poet:Verlaine nationality French

注:この例と次の例では、poet:Verlaineがハッシュキーです。 ドット、ダッシュ、およびコロンは、複数の単語のキーとフィールドを読みやすくするために一般的に使用されます。 キーが一貫性があり、読みやすい形式に従っていることを確認すると便利です。

hsetは、指定されたフィールドが新しいフィールドであり、値が正しく設定されている場合、(integer) 1を返します。

Output
(integer) 1

ただし、ハッシュキーの値、フィールド、または名前を含めないと、hsetはエラーを返します。

また、hsetは、ハッシュがすでに存在する場合、その内容を上書きすることに注意してください。

  1. hset poet:Verlaine nationality Francais

フィールドがすでに存在し、その値が正常に更新された場合、hset(integer) 0を返します。

Output
(integer) 0

hsetnxを使用してフィールドをハッシュに追加することもできますが、フィールドがまだ存在しない場合にのみ機能します。 指定されたフィールドがすでに存在する場合、hsetnxは効果がなく、(integer) 0を返します。

  1. hsetnx poet:Verlaine nationality French
Output
(integer) 0

複数のフィールド/値のペアを特定のセットに設定するには、hmsetコマンドに続けて、対応するフィールド/値の文字列を使用します。

  1. hmset poet:Verlaine born 1844 died 1896 genre Decadent

hmsetは、成功した場合にOKを返します。

ハッシュからの情報の取得

hexistsコマンドを使用して、特定のハッシュのフィールドが存在するかどうかを判断できます。

  1. hexists poet:Verlaine nationality

hexistsは、フィールドが存在する場合は(integer) 1を返し、存在しない場合は(integer) 0を返します。

フィールドの値を返すには、hgetコマンドを実行してから、ハッシュキーと、値を取得するフィールドを実行します。

  1. hget poet:Verlaine nationality
Output
"Francais"

hmgetは同じ構文を使用しますが、複数のフィールドの値を返すことができます

  1. hmget poet:Verlaine born died
Output
1) "1844" 2) "1896"

hgetまたはhmgetに渡すハッシュが存在しない場合、両方のコマンドは(nil)を返します。

  1. hmget poet:Dickinson born died
Output
1) (nil) 2) (nil)

特定のハッシュ内に保持されているすべてのフィールドのリストを取得するには、hkeysコマンドを実行します。

  1. hkeys poet:Verlaine
Output
1) "nationality" 2) "born" 3) "died" 4) "genre"

逆に、hvalsを実行して、ハッシュ内に保持されている値のリストを取得します。

  1. hvals poet:Verlaine
Output
1) "French" 2) "1844" 3) "1896" 4) "Decadent"

ハッシュが保持するすべてのフィールドとそれに関連する値のリストを返すには、hgetallを実行します。

  1. hgetall poet:Verlaine
Output
1) "nationality" 2) "French" 3) "born" 4) "1844" 5) "died" 6) "1896" 7) "genre" 8) "Decadent"

hlenを実行すると、ハッシュ内のフィールド数を確認できます。これは、「 h ash length」の略です。

  1. hlen poet:Verlaine
Output
(integer) 4

hstrlenのフィールドに関連付けられた値の文字列の長さは、「 h ash str ing length」を表します。 :

  1. hstrlen poet:Verlaine nationality
Output
(integer) 8

ハッシュが存在しない場合、hlen(integer) 0を返します。

ハッシュからのフィールドの削除

ハッシュからフィールドを削除するには、hdelコマンドを実行します。 hdelは引数として複数のフィールドを受け入れることができ、ハッシュから削除されたフィールドの数を示す整数を返します。

  1. hdel poet:Verlaine born died
Output
(integer) 2

存在しないフィールドをhdelに渡すと、そのフィールドは無視されますが、指定した他の既存のフィールドはすべて削除されます。

結論

このガイドでは、Redisでハッシュを作成および管理するために使用されるいくつかのコマンドについて詳しく説明します。 このガイドで概説したい他の関連するコマンド、引数、または手順がある場合は、以下のコメントで質問または提案を行ってください。

Redisコマンドの詳細については、Redisデータベースの管理方法に関するチュートリアルシリーズを参照してください。