Redis
 Computer >> コンピューター >  >> プログラミング >> Redis

Redisで複数の文字列値を一括設定する方法 – MSET・MSETNXコマンド徹底解説

このチュートリアルでは、RedisのMSETコマンドとMSETNXコマンドを使って、複数の文字列値をそれぞれ対応するキーに一括設定する方法を解説します。

MSETコマンドとは

MSETコマンドは、複数の文字列値を指定したキーにまとめて設定するためのコマンドです。指定したキーのいずれかがすでに存在する場合、そのデータ型に関係なく値が上書きされます。また、キーに関連付けられていた有効期限(TTL)も削除される点に注意が必要です。

MSETはアトミック(原子性を持つ)な操作であるため、指定されたすべてのキーが同時に設定され、コマンドが失敗することはありません。クライアントが「一部のキーだけ更新されている」状態を目撃することもありません。

構文

redis host:post> MSET <keyname-1> <value-1> <keyname-2> <value-2> <keyname-3> <value-3>

戻り値

- (string) OK : 操作が成功したことを示します。

実行例

Redisで複数の文字列値を一括設定する方法 – MSET・MSETNXコマンド徹底解説

MSETNXコマンドとは

MSETNXコマンドも、複数の文字列値を指定したキーに設定するためのコマンドですが、MSETとの大きな違いがあります。指定したキーのうち1つでもすでに存在する場合、操作全体が失敗し、どのキーも設定されません

MSETNXもアトミックな操作であるため、すべてのキーが同時に設定されます。「一部のキーだけ更新され、残りは更新されていない」という中途半端な状態が発生することはありません。既存のキーを上書きしたくない場面で非常に便利なコマンドです。

構文

redis host:post> MSETNX <keyname-1> <value-1> <keyname-2> <value-2> <keyname-3> <value-3>

戻り値

- 1 : 操作が成功し、すべての文字列値が設定された場合。
- 0 : 操作が失敗した場合(少なくとも1つのキーがすでに存在)。この場合、どの値も設定されません。

実行例

Redisで複数の文字列値を一括設定する方法 – MSET・MSETNXコマンド徹底解説

MSETとMSETNXの違いまとめ

項目MSETMSETNX
既存キーの扱い値を上書きする1つでも存在すれば全件失敗
有効期限(TTL)削除される新規キーのみ設定可能
戻り値常にOK成功なら1、失敗なら0
アトミック性ありあり

参考ドキュメント

  1. MSETコマンド公式ドキュメント
  2. MSETNXコマンド公式ドキュメント

以上が、Redisデータストアで複数の文字列値をそれぞれのキーに一括設定する方法の解説でした。この記事がお役に立てた場合は、ぜひコメント欄でご感想をお聞かせください。また、周りの方へのシェアも大歓迎です。

  1. Redis GEOPOSコマンドの使い方 – 地理空間データからメンバーの経度・緯度を取得する方法

    このチュートリアルでは、Redisに保存された地理空間値(ジオ空間データ)から、1つまたは複数のメンバーの経度・緯度を取得する方法を解説します。この操作には、RedisのGEOPOSコマンドを使用します。 GEOPOSコマンドとは GEOPOSコマンドは、キーに保存された地理空間値(ソート済みセット)の中から、指定した1つ以上のメンバーの経度・緯度を返すためのコマンドです。 GEOADDコマンドで座標(経度・緯度)を地理空間値に挿入する際、それらの値は52ビットのGeohashに変換されます。そのため、GEOPOSで取得される座標は、挿入時に入力した値と完全に一致するとは限らず、わずかな誤差が

  2. Redisでキーに文字列値を設定する方法を徹底解説 – SET / SETNX / SETEX / PSETEX コマンドの使い方

    このチュートリアルでは、Redisのデータストア上で指定したキーに文字列値を設定する方法について、SET、SETNX、SETEX、PSETEX の4つのコマンドを使って詳しく解説します。それぞれのコマンドの動作の違いや使い分けのポイントもあわせて紹介するので、Redisの文字列操作をマスターしたい方はぜひ参考にしてください。 SETコマンドとは SETコマンドは、指定したキーに文字列値を設定するための最も基本的なコマンドです。キーがすでに存在する場合は、その型に関係なく値が上書きされます。また、キーに設定されていた以前の有効期限(TTL)も削除される点に注意が必要です。 SETコマンドのオプシ