Redisでハッシュを管理する方法
序章
Redis は、オープンソースのメモリ内Key-Valueデータストアです。 Redis hash は、文字列フィールドと文字列値の間のマッピングを表すデータ型です。 ハッシュは多くのフィールドと値のペアを保持でき、多くのスペースを占有しないように設計されているため、データオブジェクトを表すのに理想的です。 たとえば、ハッシュは顧客を表し、name
、address
、email
、customer_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
コマンドを実行します。 このコマンドは、ハッシュキーの名前、フィールド文字列、および対応する値の文字列を引数として受け入れます。
- hset poet:Verlaine nationality French
注:この例と次の例では、poet:Verlaine
がハッシュキーです。 ドット、ダッシュ、およびコロンは、複数の単語のキーとフィールドを読みやすくするために一般的に使用されます。 キーが一貫性があり、読みやすい形式に従っていることを確認すると便利です。
hset
は、指定されたフィールドが新しいフィールドであり、値が正しく設定されている場合、(integer) 1
を返します。
Output(integer) 1
ただし、ハッシュキーの値、フィールド、または名前を含めないと、hset
はエラーを返します。
また、hset
は、ハッシュがすでに存在する場合、その内容を上書きすることに注意してください。
- hset poet:Verlaine nationality Francais
フィールドがすでに存在し、その値が正常に更新された場合、hset
は(integer) 0
を返します。
Output(integer) 0
hsetnx
を使用してフィールドをハッシュに追加することもできますが、フィールドがまだ存在しない場合にのみ機能します。 指定されたフィールドがすでに存在する場合、hsetnx
は効果がなく、(integer) 0
を返します。
- hsetnx poet:Verlaine nationality French
Output(integer) 0
複数のフィールド/値のペアを特定のセットに設定するには、hmset
コマンドに続けて、対応するフィールド/値の文字列を使用します。
- hmset poet:Verlaine born 1844 died 1896 genre Decadent
hmset
は、成功した場合にOK
を返します。
ハッシュからの情報の取得
hexists
コマンドを使用して、特定のハッシュのフィールドが存在するかどうかを判断できます。
- hexists poet:Verlaine nationality
hexists
は、フィールドが存在する場合は(integer) 1
を返し、存在しない場合は(integer) 0
を返します。
フィールドの値を返すには、hget
コマンドを実行してから、ハッシュキーと、値を取得するフィールドを実行します。
- hget poet:Verlaine nationality
Output"Francais"
hmget
は同じ構文を使用しますが、複数のフィールドの値を返すことができます
- hmget poet:Verlaine born died
Output1) "1844"
2) "1896"
hget
またはhmget
に渡すハッシュが存在しない場合、両方のコマンドは(nil)
を返します。
- hmget poet:Dickinson born died
Output1) (nil)
2) (nil)
特定のハッシュ内に保持されているすべてのフィールドのリストを取得するには、hkeys
コマンドを実行します。
- hkeys poet:Verlaine
Output1) "nationality"
2) "born"
3) "died"
4) "genre"
逆に、hvals
を実行して、ハッシュ内に保持されている値のリストを取得します。
- hvals poet:Verlaine
Output1) "French"
2) "1844"
3) "1896"
4) "Decadent"
ハッシュが保持するすべてのフィールドとそれに関連する値のリストを返すには、hgetall
を実行します。
- hgetall poet:Verlaine
Output1) "nationality"
2) "French"
3) "born"
4) "1844"
5) "died"
6) "1896"
7) "genre"
8) "Decadent"
hlen
を実行すると、ハッシュ内のフィールド数を確認できます。これは、「 h ash length」の略です。
- hlen poet:Verlaine
Output(integer) 4
hstrlen
のフィールドに関連付けられた値の文字列の長さは、「 h ash str ing length」を表します。 :
- hstrlen poet:Verlaine nationality
Output(integer) 8
ハッシュが存在しない場合、hlen
は(integer) 0
を返します。
ハッシュからのフィールドの削除
ハッシュからフィールドを削除するには、hdel
コマンドを実行します。 hdel
は引数として複数のフィールドを受け入れることができ、ハッシュから削除されたフィールドの数を示す整数を返します。
- hdel poet:Verlaine born died
Output(integer) 2
存在しないフィールドをhdel
に渡すと、そのフィールドは無視されますが、指定した他の既存のフィールドはすべて削除されます。
結論
このガイドでは、Redisでハッシュを作成および管理するために使用されるいくつかのコマンドについて詳しく説明します。 このガイドで概説したい他の関連するコマンド、引数、または手順がある場合は、以下のコメントで質問または提案を行ってください。
Redisコマンドの詳細については、Redisデータベースの管理方法に関するチュートリアルシリーズを参照してください。