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 を検索する。