知ってて損はないRedisコマンド

redis開発関連

滅多にredis-cliコマンドを使うことは無いと思いますが、障害調査の際なんかに知ってるとここぞという時に便利だったりするので自分用リファレンスメモとして残しておこうと思います。
↓コマンドリファレンスです。

Command reference – Redis
スポンサーリンク

基本的な使い方

ローカルのredisに対話モードで接続

# redis-cli

リモートのredisに対話モードで接続

redis-cli -h ホストのIP -p ポート(デフォルトは6379) -a パスワード

# redis-cli -h 10.120.10.1 -p 6379 -a hogehoge

ワンライナーでコマンド実行

対話モードで何回もコマンド実行が必要ない場合に知ってると便利です。
一番後ろにコマンドつけるだけです。下の例だと「keys test*」がコマンドです。

# redis-cli -h 10.120.10.1 -p 6379 -a hogehoge keys test*

ワンライナーで複数コマンド実行

改行でコマンドを区切るだけです。

# echo -e "keys test* \r\n get test1" | redis-cli -h 10.120.10.1 -p 6379 -a hogehoge

redis-cliのその他オプション

redis-cli –helpしたら見れますw

Usage: redis-cli [OPTIONS] [cmd [arg [arg ...]]]
  -h <hostname>      Server hostname (default: 127.0.0.1).
  -p <port>          Server port (default: 6379).
  -s <socket>        Server socket (overrides hostname and port).
  -a <password>      Password to use when connecting to the server.
  -r <repeat>        Execute specified command N times.
  -i <interval>      When -r is used, waits <interval> seconds per command.
                     It is possible to specify sub-second times like -i 0.1.
  -n <db>            Database number.
  -x                 Read last argument from STDIN.
  -d <delimiter>     Multi-bulk delimiter in for raw formatting (default: \n).
  -c                 Enable cluster mode (follow -ASK and -MOVED redirections).
  --raw              Use raw formatting for replies (default when STDOUT is
                     not a tty).
  --no-raw           Force formatted output even when STDOUT is not a tty.
  --csv              Output in CSV format.
  --stat             Print rolling stats about server: mem, clients, ...
  --latency          Enter a special mode continuously sampling latency.
  --latency-history  Like --latency but tracking latency changes over time.
                     Default time interval is 15 sec. Change it using -i.
  --latency-dist     Shows latency as a spectrum, requires xterm 256 colors.
                     Default time interval is 1 sec. Change it using -i.
  --lru-test <keys>  Simulate a cache workload with an 80-20 distribution.
  --slave            Simulate a slave showing commands received from the master.
  --rdb <filename>   Transfer an RDB dump from remote server to local file.
  --pipe             Transfer raw Redis protocol from stdin to server.
  --pipe-timeout <n> In --pipe mode, abort with error if after sending all data.
                     no reply is received within <n> seconds.
                     Default timeout: 30. Use 0 to wait forever.
  --bigkeys          Sample Redis keys looking for big keys.
  --scan             List all keys using the SCAN command.
  --pattern <pat>    Useful with --scan to specify a SCAN pattern.
  --intrinsic-latency <sec> Run a test to measure intrinsic system latency.
                     The test will run for the specified amount of seconds.
  --eval <file>      Send an EVAL command using the Lua script at <file>.
  --ldb              Used with --eval enable the Redis Lua debugger.
  --ldb-sync-mode    Like --ldb but uses the synchronous Lua debugger, in
                     this mode the server is blocked and script changes are
                     are not rolled back from the server memory.
  --help             Output this help and exit.
  --version          Output version and exit.

Examples:
  cat /etc/passwd | redis-cli -x set mypasswd
  redis-cli get mypasswd
  redis-cli -r 100 lpush mylist x
  redis-cli -r 100 -i 1 info | grep used_memory_human:
  redis-cli --eval myscript.lua key1 key2 , arg1 arg2 arg3
  redis-cli --scan --pattern '*:12345*'

  (Note: when using --eval the comma separates KEYS[] from ARGV[] items)

When no command is given, redis-cli starts in interactive mode.
Type "help" in interactive mode for information on available commands
and settings.

よく使うコマンド

全てのキーを削除

flushall

dbsizeで件数が取得できます。以下実行例です。

# redis-cli dbsize
(integer) 5
# redis-cli flushall
OK
# redis-cli dbsize
(integer) 0

テストデータ生成

key:0からkey:100まで生成する例です。

# redis-cli debug populate 10
OK
# redis-cli dbsize
(integer) 10

保存、取得、削除

setで保存、getで取得。

# redis-cli set key:1 test
OK
# redis-cli get key:1
"test"
# redis-cli get key:2
(nil)

delで削除

# redis-cli del key:1
(integer) 1
# redis-cli -a mypass get key:1
(nil)

setnxはキーが存在しなかった場合のみ保存

# redis-cli setnx key:1 test1
(integer) 1
# redis-cli setnx key:1 test2
(integer) 0
# redis-cli get key:1
"test1"

DB切り替え

-nオプションを指定するかselectコマンドを使う

# redis-cli -n 0 keys "test*"

もしくは

select 0

KEYの検索

キーを忘れてしまった時になんかに便利。ワイルドカード指定が可能。

# redis-cli keys "key:*"
1) "key:7"
2) "key:6"
3) "key:5"
4) "key:1"

モニタリング

tail -fみたいな感じでredisへのアクセスをモニタリング

# redis-cli monitor
OK
1552539143.868483 [0 127.0.0.1:44510] "GET" "key:100"

redisサーバ情報の確認

# redis-cli info

©2018 LLC Shimer-System.
image/svg+xml