redis-cli 命令详解
redis-cli命令使用
命令语法
redis-cli [OPTIONS] [cmd [arg [arg ...]]]
选项说明
-h <hostname> Server hostname (default: 127.0.0.1). ip地址 -p <port> Server port (default: 6379). 服务器端口号 -s <socket> Server socket (overrides hostname and port). -a <password> Password to use when connecting to the server. 密码 -u <uri> Server URI. url格式的地址 -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. If you use this mode in an interactive session it runs forever displaying real-time stats. Otherwise if --raw or --csv is specified, or if you redirect the output to a non TTY, it samples the latency for 1 second (you can use -i to change the interval), then produces a single output and exits. 延时统计 --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. --replica Simulate a replica showing commands received from the master. --rdb <filename> Transfer an RDB dump from remote server to local file. 导出rdb文件 --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. --hotkeys Sample Redis keys looking for hot keys. only works when maxmemory-policy is *lfu. --scan List all keys using the SCAN command.获取服务器所有的键 --pattern <pat> Useful with --scan to specify a SCAN pattern. 正则表达式 用于scan命令中 --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 not rolled back from the server memory. --cluster <command> [args...] [opts...] Cluster Manager command and arguments (see below). --verbose Verbose mode. --no-auth-warning Don't show warning message when using password on command line interface.
注意:
- -u选项中url格式参考文档https://www.iana.org/assignments/uri-schemes/prov/redis 格式为:redis://user:secret@localhost:6379/0?foo=bar&qux=baz
示例:
1、--stat:统计keys、内存、连接数、blocked、quests、connections:连续统计、持续打印
C:\Program Files\Redis>redis-cli.exe -c -h xxx -p 6379 --stat ------- data ------ --------------------- load -------------------- - child - keys mem clients blocked requests connections 16139 9.48M 95 50 492196818 (+0) 9500666 16139 9.41M 95 50 492196822 (+4) 9500666 16139 9.52M 95 50 492196877 (+55) 9500666 16138 9.44M 95 50 492196931 (+54) 9500666 ^C C:\Program Files\Redis>
列表中选项说明:
选项 | 含义 |
---|---|
keys | server中key的数量 |
mem | 键值对的总内存量 |
clients | 当前连接的总clients数量 |
blocked | 当前阻塞的客户端数量 |
requests | 服务器请求总次数 (+1) 截止上次请求增加次数 |
connections | 服务器连接次数 |
2、--latency:延时统计
C:\Program Files\Redis>redis-cli.exe -c -h hk-test-redi.o1imvs.0001.ape1.cache.amazonaws.com -p 6379 --latency min: 13, max: 46, avg: 17.35 (60 samples)^C C:\Program Files\Redis>
3、--bigkeys:找出各种数据类型的最大键值对
C:\Program Files\Redis>redis-cli.exe -c -h xxx -p 6379 --bigkeys # Scanning the entire keyspace to find biggest keys as well as # average sizes per key type. You can use -i 0.1 to sleep 0.1 sec # per 100 SCAN commands (not usually needed). [00.00%] Biggest string found so far 'duan_1' with 1 bytes [00.00%] Biggest hash found so far 'sites' with 4 fields [00.00%] Biggest set found so far 'myset1' with 3 members [00.00%] Biggest string found so far 'aaaaa111' with 3 bytes [71.43%] Biggest string found so far 'palmpay_reinterpret_member' with 10 bytes -------- summary ------- Sampled 14 keys in the keyspace! Total key length in bytes is 106 (avg len 7.57) Biggest string found 'palmpay_reinterpret_member' has 10 bytes Biggest set found 'myset1' has 3 members Biggest hash found 'sites' has 4 fields 12 strings with 24 bytes (85.71% of keys, avg size 2.00) 0 lists with 0 items (00.00% of keys, avg size 0.00) 1 sets with 3 members (07.14% of keys, avg size 3.00) 1 hashs with 4 fields (07.14% of keys, avg size 4.00) 0 zsets with 0 members (00.00% of keys, avg size 0.00) C:\Program Files\Redis>
该选项实现:通过使用scan命令遍历server中的键值对,针对不同数据类型进行统计。
4、--hotkeys:找出server中热点key 命令:redis-cli --hotkeys
选项实现:
-
redis实现8种缓存淘汰策略:
voltile-lru:从已设置过期时间的数据集(server.db[i].expires)中挑选最近最少使用的数据淘汰
volatile-ttl:从已设置过期时间的数据集(server.db[i].expires)中挑选将要过期的数据淘汰
volatile-random:从已设置过期时间的数据集(server.db[i].expires)中任意选择数据淘汰
volatile-lfu: 从已设置过期时间的数据集驱逐使用频率最少的键
allkeys-lru:从数据集(server.db[i].dict)中挑选最近最少使用的数据淘汰
allkeys-lfu: 从所有键中驱逐使用频率最少的键
allkeys-random:从数据集(server.db[i].dict)中任意选择数据淘汰
no-enviction(驱逐):禁止驱逐数据 当内存不足以容纳新写入数据时,新写入操作会报错
需要设置淘汰策略为lru或者lfu
5、--scan:游标扫描redis槽
结合linux命令 more 查看
命令:redis-cli -h host -p port --scan | more
匹配:--pattern '*hello*'
命令:redis-cli -h 10.10.52.100 -p 10119 --scan --pattern '*hello*'
输出:
统计:| wc -l
命令:redis-cli -h 10.10.52.100 -p 10119 --scan --pattern '*hello*' | wc -l
6、-n:选择库
7、--eval<file>:执行lua脚本
8、--rdb:导入rdb文件
root@hylaz:~# redis-cli --rdb rdb.log SYNC sent to master, writing 344 bytes to 'rdb.log' Transfer finished with success.
该命令选项实现:
- 向server发送SYNC命令,返回需要写的总字节数
- 从server读取总字节数据写到指定文件中
9、 --lru-test 测试Redis的LRU实现的质量
模拟使用80-20%幂律分布来执行对GET和SET操作的模拟。
命令:redis-cli -h host -p port --lru-test 测试键数
输出:
C:\Program Files\Redis>redis-cli.exe -c -h xxx -p 6379 --lru-test duan_1 7750 Gets/sec | Hits: 7750 (100.00%) | Misses: 0 (0.00%) 7750 Gets/sec | Hits: 7750 (100.00%) | Misses: 0 (0.00%) 7750 Gets/sec | Hits: 7750 (100.00%) | Misses: 0 (0.00%) 6750 Gets/sec | Hits: 6750 (100.00%) | Misses: 0 (0.00%) ^C C:\Program Files\Redis>
10、-r 连续重复执行
C:\Program Files\Redis>redis-cli.exe -c -h xxx -p 6379 -r 10 incr duan_1 (integer) 2 (integer) 3 (integer) 4 (integer) 5 (integer) 6 (integer) 7 (integer) 8 (integer) 9 (integer) 10 (integer) 11 C:\Program Files\Redis>
参考:https://www.cnblogs.com/hylazphp/p/10153481.html