Redisにおけるハッシュの管理方法
はじめに
Redisはオープンソースのインメモリキーバリューデータストアです。Redisのハッシュは、文字列フィールドと文字列値のマッピングを表すデータ型です。ハッシュは多くのフィールド-値のペアを保持できるため、データオブジェクトを表現するのに最適であり、それほどスペースを取らないように設計されています。例えば、ハッシュは顧客を表し、名前、住所、メールアドレス、顧客IDなどのフィールドを含むことがあります。
このチュートリアルでは、Redisでハッシュを管理する方法について説明します。ハッシュの作成からデータの取得、削除までについて取り上げます。
このガイドの使い方はどうすれば良いですか?(Kono gaido no tsukaikata wa dou sureba ii desu ka?)
このガイドは、自己完結型の実例を使用したチートシートとして書かれています。あなたが完了させたいタスクに関連するいかなるセクションにも飛ぶことをおすすめします。
このガイドに示されているコマンドは、Redisバージョン6.0.16を実行しているUbuntu 22.04サーバーでテストされました。同様の環境をセットアップするには、Ubuntu 22.04でRedisをインストールしてセキュリティを確保する方法に関するガイドのステップ1に従うことができます。これらのコマンドの動作を確認するために、Redisのコマンドラインインターフェースであるredis-cliを使用して実行します。異なるRedisインターフェース(例えばRedli)を使用している場合、特定のコマンドの出力は異なる場合があります。
または、これらのコマンドをテストするために、管理されたRedisデータベースインスタンスを提供することもできますが、データベースプロバイダーが許可する制御レベルによっては、このガイドに記載されているようにすべてのコマンドが動作しない場合があります。
Silicon Cloudの管理されたデータベースを提供するには、Managed Databasesの製品ドキュメントに従ってください。
その後、Redliをインストールするか、TLSトンネルを設定してManaged DatabaseにTLS経由で接続する必要があります。
ハッシュを作成する
ハッシュを作成するには、hsetコマンドを実行します。このコマンドは、ハッシュのキーの名前、フィールド文字列、および対応する値の文字列を引数として受け入れます。
- hset poet:Verlaine nationality French
Note
hsetは、指定されたフィールドが新しいフィールドであり、値が正しく設定された場合に、(整数) 1を返します。
(integer) 1
しかしながら、ハッシュキーのための値、フィールド、または名前を含めずに hset を実行した場合、エラーが返されます。
また、既に存在するハッシュの内容は、hsetを使用すると上書きされることに注意してください。
- hset poet:Verlaine nationality Francais
もしフィールドがすでに存在しており、その値が正常に更新された場合、hsetは(整数) 0を返します。
(integer) 0
フィールドがまだ存在しない場合は、hsetnxを使用してハッシュにフィールドを追加することもできます。指定したフィールドが既に存在する場合、hsetnxは何の影響も持たず、(整数) 0を返します。
- hsetnx poet:Verlaine nationality French
(integer) 0
与えられたセットに複数のフィールド/値のペアを設定するには、対応するフィールド/値の文字列に続けてhmsetコマンドを使用してください。
- hmset poet:Verlaine born 1844 died 1896 genre Decadent
成功した場合、hmsetはOKを返します。
ハッシュから情報を取得する
hexistsコマンドを使用して、指定されたハッシュにフィールドが存在するかどうかを判定できます。
- hexists poet:Verlaine nationality
hexistsというフィールドが存在する場合、整数1を返し、存在しない場合は整数0を返します。
フィールドの値を返すには、hgetコマンドを実行し、ハッシュキーと取得したいフィールドを指定します。
- hget poet:Verlaine nationality
“Francais”
hmgetは同じ構文を使用しますが、複数のフィールドの値を返すことができます。
- hmget poet:Verlaine born died
1) “1844” 2) “1896”
hgetまたはhmgetに渡すハッシュが存在しない場合、両方のコマンドは(nil)を返します。
- hmget poet:Dickinson born died
1) (nil) 2) (nil)
あるハッシュ内に含まれる全てのフィールドのリストを取得するには、hkeysコマンドを実行してください。
- hkeys poet:Verlaine
1) “nationality” 2) “born” 3) “died” 4) “genre”
逆に、hvalsを実行してハッシュ内に保持されている値のリストを取得します。
- hvals poet:Verlaine
1) “French” 2) “1844” 3) “1896” 4) “Decadent”
ハッシュが保持する全てのフィールドとそれに関連する値のリストを返すには、hgetallを実行してください。
- hgetall poet:Verlaine
1) “nationality” 2) “French” 3) “born” 4) “1844” 5) “died” 6) “1896” 7) “genre” 8) “Decadent”
「ハッシュのフィールド数は、「ハッシュ長」を実行することで見つけることができます。」
- hlen poet:Verlaine
(integer) 4
「ハッシュ文字列の長さ」を意味するhstrlenを使用することで、フィールドに関連付けられた値の文字列の長さを見つけることができます。
- hstrlen poet:Verlaine nationality
(integer) 8
ハッシュが存在しない場合、hlenは整数の0を返します。
ハッシュからフィールドを削除する。
ハッシュからフィールドを削除するには、hdelコマンドを実行します。hdelは複数のフィールドを引数として受け取り、ハッシュから削除されたフィールドの数を示す整数を返します。
- hdel poet:Verlaine born died
(integer) 2
存在しないフィールドをhdelに渡すと、そのフィールドは無視されますが、指定した他の既存のフィールドは削除されます。
結論
このガイドでは、Redisでハッシュを作成および管理するために使用されるいくつかのコマンドについて詳しく説明しています。もしこのガイドで学びたい他の関連コマンドや引数、手順があれば、コメントで質問したり提案したりしてください。
Redisコマンドに関する詳細な情報は、弊社のRedisデータベースの管理方法についてのチュートリアルシリーズをご覧ください。