画像
画像

ABOUT

画像

WORK

画像

ARTICLES

画像

CONTACT

画像
画像

0

Redisの機能紹介#基本コマンド編

作成日時: 2025/09/13

更新日時: 2025/09/18

            
            
# はじめに 次の記事(WIP)でRedisの細かい機能やバージョン`6.x`やバージョン`7.x`の機能を紹介するため、 この記事はその前の基本コマンド編になります。 # 環境 macOS Monterey 12.6 MacBook Air (M1, 2020) redis-server 8.2.1 redis-cli 8.2.1 # 機能一覧 ## 基本操作 ### SET データ登録。 ```sh SET key1 "haroot" # OK ``` #### EXオプション 作成するキーの**期限**を秒数で指定します。 ```sh SET key1 "haroot" EX 10 # 10秒後にキーの期限が切れます ``` #### XXオプション 既存でキーが**存在する場合のみ**、SETが成功します。 ```sh SET key1 "haroooot" XX # OK(登録成功) SET key100 "haroooot" XX # nil(登録失敗) ``` #### GETオプション SET時に**既存の値**を返します。 ```sh SET key1 "haroot_edit" GET # "haroot" ``` * ⭐️ **6.xの新機能**です。 * 既存の値がない場合、nilが返りますが登録は成功します。 ```sh SET key100 "haroot_edit" GET # nil ``` ### GET データ取得。 ```sh GET key1 # "haroot" ``` - `SET`コマンドのようなオプションはありません。 ### KEYS 指定したパターンに一致するキー一覧の取得。 ```sh KEYS k* # key1 key2 ``` #### 注意点 * ⚠️ `KEYS`は基本的に**デバッグ用のコマンド**です。 * limitの指定ができないので、データ量によっては**パフォーマンスに影響します。** * 普段は`SCAN`コマンドを利用してください。 #### 指定できるパターン - 0文字以上の任意の文字列: **`*`** - `c*t`の場合 - ⭕️: `ct`,`cat`,`cuuuuut` - ❌: `cute` - 任意の1文字: **`?`** - `c?t`の場合 - ⭕️: `cat`,`cute` - ❌: `ct`,`cute` - OR指定: **`[]`** - `c[au]t`の場合 - ⭕️: `cat`,`cut` - ❌: `cpt`,`ct` - NOT指定: **`[^]`** - `c[^a]t`の場合 - ⭕️: `cut` - ❌: `cpt`,`ct` - 範囲指定: **`[-]`** - `c[a-e]t`の場合 - ⭕️: `cat`,`cbt`,`cet` - ❌: `cpt`,`cut` ### SCAN **キー一覧**の取得。 ```sh SCAN 0 ``` * 取得する番号(カーソル)を指定する必要があります。 * 初めは`0`を指定し、スキャンしきれない残りは**レスポンスの1つ目の番号を指定**していきます。 * レスポンスの番号が`0`になれば、**それ以上項目**がないことを示します。 * 例 ```sh # 最初のリクエスト SCAN 0 # レスポンス 1) "28" 2) 1) "cpt" 2) "cet" 3) ... 10) "cut" ########## # リクエスト SCAN 28 # レスポンス 1) "7" 2) 1) "ct" 2) "cuuuut" 3) ... 10) "cute" ########## # リクエスト SCAN 7 # レスポンス 1) "0" 2) 1) "cat" 2) "curl" 3) "cx" ``` * `KEYS`同様、パターンの指定も可能です。 * 他に`SSCAN`, `ZSCAN`, `HSCAN`コマンドがあります。 * `SSCAN key`: セット型(`SADD`)の特定キーの値一覧をスキャン * `ZSCAN key`: ソート済みセット型(`ZADD`)の特定キーの値一覧をスキャン * `HSCAN key`: ハッシュ型(`HSET`)の特定キーの値一覧をスキャン ### TTL 対象のキーの**期限**を取得。 ```sh # キーの期限がない場合 SET key1 "haroot" TTL key1 # -1 # キーの期限がある場合 SET key1 "haroot" EX 10 TTL key1 # 10 # キーがない場合 TTL key100 #-2 ``` #### レスポンス区分 - 正の値: 期限が切れるまでの**秒数** - `-1`: 期限が設定されていない - `-2`: キーが存在しない ### DEL 対象のキーを**削除**。 ```sh DEL key1 # 1 ```