redis-cli 特殊参数的用法

郎健柏
2023-12-01

1、–raw 参数的用法

  • 按数据原有格式打印数据,不展示额外的类型信息
[work@ ~]$ redis-cli -p 32495 -c set a 1
OK
[work@ ~]$ redis-cli -p 32495 -c incr 1
(integer) 1
[work@ ~]$ redis-cli -p 32495 -c incr 1
(integer) 2
[work@ ~]$ redis-cli -p 32495 -c incr 1 > out.txt
[work@ ~]$ cat out.txt 
3
[work@ ~]$ rm -rf out.txt 
[work@ ~]$ cd test/
[work@ ]$ redis-cli -p 32495 -c -raw incr 1 
Unrecognized option or bad number of args for: '-raw'
[work@]$ redis-cli -p 32495 -c --raw incr 1 
4
  • 显示中文
[work@ ]$ redis-cli -p 32495 -c set chen 凡
OK
[work@ test]$ redis-cli -p 32495 -c get chen
"\xe5\x87\xa1"
[work@test]$ redis-cli -p 32495 -c --raw get chen
凡
[work@test]$ redis-cli -p 32495 -c --csv get chen
"\xe5\x87\xa1\xe9\xaa\x90"
[work@test]$ redis-cli -p 32495 -c --raw get chen
凡

https://www.cnblogs.com/litaozijin/p/7118226.html

2、redis中的CSV是什么用法?

使用 redis-cli --help可以看到如下用法介绍。

" --csv              Output in CSV format\n"

表示以CSV格式输出

但是没有太多的用法介绍。之后又看源码,发现 redis-benchmark中也有 --csv 的用法,–help 看到的用法介绍和redis-cli 看到的是一样的,但是却多了一个如下的使用介绍:

" Benchmark 127.0.0.1:6379 for a few commands producing CSV output:\n"
"   $ redis-benchmark -t ping,set,get -n 100000 --csv\n\n"

在测试机上实验输出如下:

[work@ bin]$ ./redis-benchmark -p 32495 -t ping,set,get -n 100000
====== PING_INLINE ======
  100000 requests completed in 1.52 seconds
  50 parallel clients
  3 bytes payload
  keep alive: 1

100.00% <= 0 milliseconds
65746.22 requests per second

====== PING_BULK ======
  100000 requests completed in 1.39 seconds
  50 parallel clients
  3 bytes payload
  keep alive: 1

99.99% <= 1 milliseconds
100.00% <= 1 milliseconds
71890.73 requests per second

====== SET ======
  100000 requests completed in 1.34 seconds
  50 parallel clients
  3 bytes payload
  keep alive: 1

100.00% <= 0 milliseconds
74794.31 requests per second

====== GET ======
  100000 requests completed in 1.34 seconds
  50 parallel clients
  3 bytes payload
  keep alive: 1

99.98% <= 1 milliseconds
100.00% <= 1 milliseconds
74626.87 requests per second


[work@ bin]$ ./redis-benchmark -p 32495 -t ping,set,get -n 100000 --csv
"PING_INLINE","72992.70"
"PING_BULK","72202.16"
"SET","74962.52"
"GET","74239.05"

这是redis-benchmark的测试结果,那redis-cli是怎么用的呢?

[work@ redis]$ redis-cli -p 33367 mget a b c d e
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
[work@ redis]$ redis-cli -p 33367 --raw mget a b c d e 
1
2
3
4
5
[work@ redis]$ redis-cli -p 33367 --csv  mget a b c d e 
"1","2","3","4","5"

源码中关于csv的定义使用如下:

else if (config.csv) {
        printf("\"%s\",\"%.2f\"\n", config.title, reqpersec);

由此可见,加上csv只是更改了一下输出的格式

3、其他参数的用法简介

[work@ redis]$ redis-cli --help
redis-cli 4.0.12

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.
  -u <uri>           Server URI.
  -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.
  --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.
  --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.
  --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.
 类似资料: