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

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

このチュートリアルでは、Redisのデータストア上で指定したキーに文字列値を設定する方法について、SETSETNXSETEXPSETEX の4つのコマンドを使って詳しく解説します。それぞれのコマンドの動作の違いや使い分けのポイントもあわせて紹介するので、Redisの文字列操作をマスターしたい方はぜひ参考にしてください。

SETコマンドとは

SETコマンドは、指定したキーに文字列値を設定するための最も基本的なコマンドです。キーがすでに存在する場合は、その型に関係なく値が上書きされます。また、キーに設定されていた以前の有効期限(TTL)も削除される点に注意が必要です。

SETコマンドのオプション引数

SETコマンドは、以下のオプション引数を受け付けることができます。

  1. EX seconds: キーの有効期限を秒単位で設定します。
  2. PX milliseconds: キーの有効期限をミリ秒単位で設定します。
  3. NX: キーが存在しない場合のみ文字列値を設定します。
  4. XX: キーがすでに存在する場合のみ文字列値を設定します。

これらのオプションを組み合わせることで、「存在チェック付きの書き込み」や「有効期限付きのキャッシュ保存」など、柔軟なデータ操作が可能になります。

SETコマンドの構文

redis host:port> SET <keyname> <value>

実行結果

- OK:操作が成功し、文字列値が設定された場合
- Null:操作が失敗し、文字列値が設定されなかった場合

SETコマンドの使用例

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

SETNXコマンドとは

SETNXコマンド(SET if Not eXists)は、指定したキーに文字列値を設定するコマンドですが、キーが存在しない場合のみ値を格納します。キーがすでに存在する場合は操作が失敗し「0」が返され、キーが存在しない場合は値が保存され「1」が返されます。

これは「SET key value NX」と同等の動作であり、分散ロックの実装などによく利用されてきました。

SETNXコマンドの構文

redis host:port> SETNX <keyname> <value>

実行結果

- 1:操作が成功し、文字列値が設定された場合
- 0:操作が失敗し、文字列値が設定されなかった場合

SETNXコマンドの使用例

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

SETEXコマンドとは

SETEXコマンドは、指定したキーに文字列値を設定すると同時に、秒単位で有効期限(TTL:Time To Live)を設定します。秒数として0以下の値を指定した場合、キーは即座に削除されます。

SETEXは本質的にアトミック(不可分)な操作であり、以下の2つのコマンドを連続して実行するのと同等です。

SET key value
EXPIRE key seconds

2つの操作が1回の呼び出しで完結するため、ネットワークラウンドトリップが1回で済み、競合状態も発生しません。

SETEXコマンドの構文

redis host:port> SETEX <keyname> <seconds> <value>

実行結果

- OK:操作が成功し、文字列値が設定された場合
- Null:操作が失敗し、文字列値が設定されなかった場合

※ SETEXは「SET key value EX seconds」と同等の動作です。

SETEXコマンドの使用例

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

PSETEXコマンドとは

PSETEXコマンドは、SETEXコマンドと非常によく似ていますが、異なる点は有効期限をミリ秒単位で指定できることです。より細かい精度で期限を制御したい場合に便利です。

PSETEXコマンドの構文

redis host:port> PSETEX <keyname> <milliseconds> <value>

実行結果

- OK:操作が成功し、文字列値が設定された場合
- Null:操作が失敗し、文字列値が設定されなかった場合

※ PSETEXは「SET key value PX milliseconds」と同等の動作です。

PSETEXコマンドの使用例

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

各コマンドの使い分けまとめ

コマンド特徴
SET基本のコマンド。オプションで有効期限や存在条件を指定可能
SETNXキーが存在しない場合のみ値を設定(分散ロック向け)
SETEX値の設定と秒単位の有効期限を同時に設定
PSETEX値の設定とミリ秒単位の有効期限を同時に設定

なお、SETNX・SETEX・PSETEXは現在では非推奨(deprecated)となっており、Redis 2.6.12以降では対応するオプション付きのSETコマンドを使用することが公式に推奨されています。新規開発では「SET key value NX」「SET key value EX seconds」「SET key value PX milliseconds」の形式を採用しましょう。

参考ドキュメント

  1. SET コマンド公式ドキュメント
  2. SETNX コマンド公式ドキュメント
  3. SETEX コマンド公式ドキュメント
  4. PSETEX コマンド公式ドキュメント

以上、Redisのデータストアで指定したキーに文字列値を設定する方法について解説しました。この記事が役に立ったと思ったら、ぜひコメント欄で感想を共有したり、他の方にもシェアしてみてください。

  1. 【Redis入門】HSET・HSETNX・HMSETコマンドでハッシュのフィールドに値を設定する方法

    このチュートリアルでは、Redisのキーに格納されたハッシュ値の各フィールドに対して値を設定する方法を解説します。使用するのは HSET、HSETNX、HMSET の3つのコマンドです。それぞれの構文、戻り値、実行例を順番に見ていきましょう。 HSETコマンドとは HSET コマンドは、指定したキーに格納されているハッシュ内の指定フィールドに値を設定します。 フィールドがすでに存在する場合は、既存の値が上書きされます。 キーが存在しない場合は、設定操作の前にハッシュを保持する新しいキーが自動的に作成されます。 キーは存在するものの、格納されている値がハッシュ型でない場合はエラーが返されます。

  2. Redis GEOHASHコマンドの使い方 – 地理空間データのメンバーからジオハッシュ文字列を取得する方法

    このチュートリアルでは、Redisに保存された地理空間値(ジオスペーシャル値)に含まれる1つまたは複数のメンバー(要素)のGeohash文字列を取得する方法を解説します。この目的には、RedisのGEOHASHコマンドを使用します。 GEOHASHコマンドとは GEOHASHコマンドは、キーに保存された地理空間値の中から指定された1つ以上のメンバーに対して、有効なGeohash文字列を返すためのコマンドです。地理空間値はソート済みセット(sorted set)として表現され、GEOADDコマンドを使って登録されます。 Redisは地理空間要素の位置情報(経度・緯度)を、Geohash技術の変種