Redisでキーに文字列値を設定する方法を徹底解説 – SET / SETNX / SETEX / PSETEX コマンドの使い方
このチュートリアルでは、Redisのデータストア上で指定したキーに文字列値を設定する方法について、SET、SETNX、SETEX、PSETEX の4つのコマンドを使って詳しく解説します。それぞれのコマンドの動作の違いや使い分けのポイントもあわせて紹介するので、Redisの文字列操作をマスターしたい方はぜひ参考にしてください。
SETコマンドとは
SETコマンドは、指定したキーに文字列値を設定するための最も基本的なコマンドです。キーがすでに存在する場合は、その型に関係なく値が上書きされます。また、キーに設定されていた以前の有効期限(TTL)も削除される点に注意が必要です。
SETコマンドのオプション引数
SETコマンドは、以下のオプション引数を受け付けることができます。
- EX seconds: キーの有効期限を秒単位で設定します。
- PX milliseconds: キーの有効期限をミリ秒単位で設定します。
- NX: キーが存在しない場合のみ文字列値を設定します。
- XX: キーがすでに存在する場合のみ文字列値を設定します。
これらのオプションを組み合わせることで、「存在チェック付きの書き込み」や「有効期限付きのキャッシュ保存」など、柔軟なデータ操作が可能になります。
SETコマンドの構文
redis host:port> SET <keyname> <value>
実行結果
- OK:操作が成功し、文字列値が設定された場合 - Null:操作が失敗し、文字列値が設定されなかった場合
SETコマンドの使用例

SETNXコマンドとは
SETNXコマンド(SET if Not eXists)は、指定したキーに文字列値を設定するコマンドですが、キーが存在しない場合のみ値を格納します。キーがすでに存在する場合は操作が失敗し「0」が返され、キーが存在しない場合は値が保存され「1」が返されます。
これは「SET key value NX」と同等の動作であり、分散ロックの実装などによく利用されてきました。
SETNXコマンドの構文
redis host:port> SETNX <keyname> <value>
実行結果
- 1:操作が成功し、文字列値が設定された場合 - 0:操作が失敗し、文字列値が設定されなかった場合
SETNXコマンドの使用例

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コマンドの使用例

PSETEXコマンドとは
PSETEXコマンドは、SETEXコマンドと非常によく似ていますが、異なる点は有効期限をミリ秒単位で指定できることです。より細かい精度で期限を制御したい場合に便利です。
PSETEXコマンドの構文
redis host:port> PSETEX <keyname> <milliseconds> <value>
実行結果
- OK:操作が成功し、文字列値が設定された場合 - Null:操作が失敗し、文字列値が設定されなかった場合
※ PSETEXは「SET key value PX milliseconds」と同等の動作です。
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」の形式を採用しましょう。
参考ドキュメント
- SET コマンド公式ドキュメント
- SETNX コマンド公式ドキュメント
- SETEX コマンド公式ドキュメント
- PSETEX コマンド公式ドキュメント
以上、Redisのデータストアで指定したキーに文字列値を設定する方法について解説しました。この記事が役に立ったと思ったら、ぜひコメント欄で感想を共有したり、他の方にもシェアしてみてください。
-
【Redis入門】HSET・HSETNX・HMSETコマンドでハッシュのフィールドに値を設定する方法
このチュートリアルでは、Redisのキーに格納されたハッシュ値の各フィールドに対して値を設定する方法を解説します。使用するのは HSET、HSETNX、HMSET の3つのコマンドです。それぞれの構文、戻り値、実行例を順番に見ていきましょう。 HSETコマンドとは HSET コマンドは、指定したキーに格納されているハッシュ内の指定フィールドに値を設定します。 フィールドがすでに存在する場合は、既存の値が上書きされます。 キーが存在しない場合は、設定操作の前にハッシュを保持する新しいキーが自動的に作成されます。 キーは存在するものの、格納されている値がハッシュ型でない場合はエラーが返されます。
-
Redis GEOHASHコマンドの使い方 – 地理空間データのメンバーからジオハッシュ文字列を取得する方法
このチュートリアルでは、Redisに保存された地理空間値(ジオスペーシャル値)に含まれる1つまたは複数のメンバー(要素)のGeohash文字列を取得する方法を解説します。この目的には、RedisのGEOHASHコマンドを使用します。 GEOHASHコマンドとは GEOHASHコマンドは、キーに保存された地理空間値の中から指定された1つ以上のメンバーに対して、有効なGeohash文字列を返すためのコマンドです。地理空間値はソート済みセット(sorted set)として表現され、GEOADDコマンドを使って登録されます。 Redisは地理空間要素の位置情報(経度・緯度)を、Geohash技術の変種