Redis redis-cli
redis-cli インストール
macOS 環境に Homebrew でインストールする方法は以下のとおりである。
brew tap aoki/redis-cli
brew update && brew doctor
brew install redis-cli
github.com/aoki/homebrew-redis-cli
サーバー制御
redis-cli 接続
ホスト名とポート番号を省略すると、localhost の 6379 に接続される。
$ redis-cli
リモート接続は以下のように行う。
$ redis-cli -h #{ホスト名} -p #{ポート番号}
その他の主なオプションは以下のとおりである。
-n: database 番号-a: パスワード-s: ソケット-u: サーバー URL など、接続時にさまざまなオプション設定が使用可能
サーバー情報の照会
redis-cli info
> info
# Server
redis_version:6.0.9
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:ffd199d8341c2d8f
redis_mode:standalone
... 以下省略 ....
接続中クライアント一覧の照会
> client list
接続中クライアントの切断
> client kill 10.0.0.8:33333
コマンド実行後に受信したリクエストをすべてダンプ
redis-cli monitor
> monitor
OK
Key 操作
key、value の設定
set {key名} {value}
> set key01 value01
OK
key で value を照会
get {key名}
> get key01
value01
key 一覧の照会
> keys *
key01
key の削除
> del key01
1
key が存在するか確認。1なら true
exists {key名} {value}
> exists key01
0
key がまだ存在しない場合にデータをセット
setnx {key名} {value}
> setnx key01 value02
1
> setnx key01 value02
0
結果が 0 であれば、key が存在するためデータが更新されなかったことを意味する。
既存 key 名の変更
rename {以前の key名} {新しい key名}
> rename key01 key02
OK
> rename key03 key04
ERR no such key
現在のデータベースの key 数を返す
> dbsize
2
特定 key を別のデータベースへ移動
> move key01 1
1
DB 番号の選択
> select 1
OK
現在のデータベースの key をすべて削除
> flushdb
OK
すべてのデータベースの key をすべて削除
> flushall
OK
正規表現
Redis で使用できる正規表現は次のみである。
[]: 括弧内の文字のいずれか1つ*: 任意の文字列?: 単一文字
使用例
# すべての Key 一覧を照会する。
$ keys *
# 数字で始まる key を照会する。
$ keys [0-9]*
Multiple Key
複数の key 値をまとめて設定
> mset key01 value01 key02 value02 key03 value03
OK
複数の key 値を一度に照会
> mget key01 key02 key03
value01
value02
value03
expire
有効期限を設定して key を設定
以下の例では 60 秒に設定している。
> setex key01 60 value01
OK
既存 key の有効期限設定
> expire key02 30
Math
key 値に 1 を加える
以下の例では key02 に 1 を設定し、1 を増加させる。
> set key02 1
OK
> incr key02
2
key 値に指定した数を加える
> incrby key02 100
102
key 値から 1 を引く
> decr key02
101
key 値から指定した数を引く
> decrby key02 51
50
List
List の先頭に値を追加
空白で区切って複数の値を指定できる。
> lpush list01 value01
1
List の末尾に値を追加
空白で区切って複数の値を指定できる。
> rpush list01 value02
2
List 要素の数を返す
> llen list01
2
List で指定番号の要素を返す
> lindex list01 0
value01
List で指定した開始番号から終了番号までの要素を返す
> lrange list01 0 1
value01
value02
List の指定番号の要素を指定値へ変更
> lset list01 1 value03
OK
> lindex list01 1
value03
List の最初の要素を返して削除
> lpop list01
value01
List の最後の要素を返して削除
> rpop list01
value03
List で指定した開始番号から終了番号までの要素だけを残す形でリストを変更
> ltrim list01 1 3
OK
Hash
親 Key、子 Key(field)、値(value)によって管理されるデータ形式である。たとえば、親 Key を製品 ID、子 Key を製品属性情報の保存に使うと、RDB のデータ管理に近い考え方で使用できる。
Hash の指定フィールドに値を追加
> hset hash01 field01 value01
(integer) 1
Hash の指定フィールドの値を返す
> hget hash01 field01
"value01"
Hash の複数フィールドに追加
> hmset hash01 field02 value02 field03 value03
OK
Hash の複数フィールドの値を返す
> hmget hash01 field01 field02 field03
value01
value02
value03
Hash フィールドをすべて返す
> hkeys hash01
field01
field02
field03
Hash フィールドの値をすべて返す
> hvals hash01
value01
value02
value03
Hash の指定フィールドの値に指定数を加算
> hincrby hash01 field04 100
101
Hash の指定フィールドが存在するか確認
> hexists hash01 field01
1
Hash フィールド数を返す
> hlen hash01
4
Hash の指定フィールドを削除
> hdel hash01 field04
1
その他の操作
keys を使用できないときに key を検索する方法
scan 0 match devkuma-* count 1000
key 名は wildcard 検索でき、devkuma-* は devkuma- で始まる key を検索する。