🎃
Redisの基本コマンド入門【保存版】
はじめに
Redisはインメモリデータベースで、高速な読み書きが特徴。主にキャッシュやリアルタイム分析、セッション管理など、スピードが求められる用途で広く使われている。
Redisの準備
redis-cliを使うために必要なこと
①Redisのインストール(Mac)
brew install redis
②Redisの起動
redis-server
③Redisへの接続
redis-cli
127.0.0.1:6379>
①文字列(String)
SET:値を設定
> SET key1 "hello"
OK
GET:値を取得
> GET key1
"hello"
// 存在しないキーはnilが返る
> GET key2
(nil)
MGET:複数のキーの値を取得
> MSET key1 "hello" key2 "ohh"
OK
> MGET key1 key2
1) "hello"
2) "ohh"
MSET:複数のキーと値を登録
> MSET key1 "hello" key2 "ohh"
OK
> get key1
"hello"
> get key2
"ohh"
MSETNX:指定したキーがすべて存在しなければ値を登録
> MSETNX key1 "hello" key2 "ohh"
OK
> get key1
"hello"
> get key2
"ohh"
// key3が存在していない
> MSETNX key1 "yea" key3 "aaa"
(integer) 0
//key1は更新されず、key3は登録されない
> get key1
"hello"
> get key3
(nil)
SETNX:既存キーが存在しない場合に登録
キーが存在する場合は更新されない
> SET key1 "hello"
OK
> SETNX key1 "abc"
(integer) 0
> GET key1
"hello"
> SETNX key2 "abc"
(integer) 1
> GET key1
"abc"
SETEX:キーに有効期限を秒単位で設定
ttlコマンドによって有効期限を確認可能
> SETEX key 10 "hello"
OK
// 有効期限を確認し、残り5秒であることを示す
> ttl key
(integer) 5
// 有効期限が切れると-2が返却
> ttl key
(integer) -2
PSETEX:キーに有効期限をミリ秒単位で設定
// キーに1000ms(1秒)の有効期限設定
> psetex key 10000 "hello"
OK
// 有効期限が1798ミリ秒であることを示す
> pttl key
(integer) 1798
// 有効期限切れの場合は-2が返却
> pttl key
(integer) -2
GETSET:値の取得と更新を同時に行う
// 新規に登録する場合はnilが返却
> GETSET key "hello"
(nil)
//現在の値を取得し、新しい値を登録
> GETSET key "ohh"
"hello"
STRLEN:値の長さを取得
// キーが存在しない場合は0が返却
> STRLEN key
(integer) 0
> SET key "hello"
OK
> STRLEN key
(integer) 5
DEL:キーを削除
> DEL key1
(integer) 1
②リスト(List)
LPUSH:左から追加
> LPUSH mylist "a"
(integer) 1
RPUSH:右から追加
> RPUSH mylist "b"
(integer) 2
LRANGE:リストの取得
> LRANGE mylist 0 -1
1) "a"
2) "b"
③ハッシュ(Hash)
フィールドと値のペアを保存できる(オブジェクトに近い)
HSET:フィールドを追加
> HSET user:1 name "Alice" age "30"
(integer) 2
HGETALL:全てのフィールドと値を取得
> HGETALL user:1
1) "name"
2) "Alice"
3) "age"
4) "30"
④セット(Set)
重複のない集合データ。
SADD:要素を追加
SADD myset "apple"
SMEMBERS:全ての要素を取得
SMEMBERS myset
⑤整数操作(INCR/DECR)
カウンター的に使える機能
INCR:値をインクリメント
INCR counter
DECR:デクリメント
DECR counter
⑥その他便利なコマンド
KEYS:キーの一覧を取得
KEYS *
EXPIRE:キーに有効期限を設定(秒)
EXPIRE key1 60
TTL:有効期限の残り時間
TTL key1
Discussion