Redis-Shell

来源:互联网 发布:手机如何设置网络共享 编辑:程序博客网 时间:2024/06/03 10:59

Redis Shell

一. redis-cli

1.1 查看redis-cli命令帮助 redis-cli help

查看redis-cli命令帮助

[devuser@iz2ze2ehfvske0t6zflgupz ~]$redis-cli help

redis-cli 3.2.4

To get help about Redis commands type:

     "help @<group>" to get a list of commands in<group>

     "help <command>" for help on <command>

     "help <tab>" to get a list of possible help topics

     "quit" to exit

 

To set redis-cli perferences:

     ":set hints" enable online hints

     ":set nohints" disable online hints

Set your preferences in ~/.redisclirc

 

1.2按指定的次数重复执行命令redis-cli –r count commond

命令:redis-cli –r count commond

例如:redis-cli -h 10.3.34.101  -p6378 -r 3 ping

返回:PONG

PONG

PONG

 

1.3 几秒钟执行一次命令 redis-cli –i seconds command

命令:redis-cli –i seconds command

例如:redis-cli -h 10.3.34.101  -p6378 -r 3 -i 2 ping

两秒钟后返回: pong

例如:每秒返回一次内存的使用量,5次

执行命令:redis-cli -h 10.3.34.101  -p6378 -r 5 -i 1 info|grep used_memory_human

返回:used_memory_human:844.02K

used_memory_human:844.02K

used_memory_human:844.02K

used_memory_human:844.02K

used_memory_human:844.02K

 

 

1.4 从标准输入读取数据做为redis-cli的最后一个参数 echo ‘’ | redis-cli –x command

命令:echo ‘’ | redis-cli –x command

例如:echo "hello world"|redis-cli -h 10.3.34.101 -p 6379 -x setword

返回:ok

再次执行:redis-cli -h 10.3.34.101 -p 6379 get word

返回:"hello world\n"

1.5 redis-cli –c

1.6 redis-cli –a

1.7 redis-cli –scan和—pattern

1.8 模拟Redis从节点redis-cli –slave

--slave选项是把当前客户端模拟成当前Redis节点的从节点,可用用来获取当前redis服务节点的更新操作。

命令:redis-cli --slave

 

例如:

打开客户端client1

执行如下命令redis-cli -h 10.3.34.101 -p 6379 –slave

返回:SYNC with master, discarding 12248 bytes of bulk transfer...

SYNC done. Logging commands from master.

间隔一段时间:客户端执行ping,如下:

SYNC with master, discarding 12248 bytes ofbulk transfer...

SYNC done. Logging commands from master.

ping

此时打开另一个客户端client2,连接到redis服务器,

执行命令: set a a1

返回:ok

此时,在客户端client1处可以看到如下信息:

SYNC with master, discarding 12242 bytes ofbulk transfer...

SYNC done. Logging commands from master.

"PING"

"PING"

"PING"

"PING"

"PING"

"PING"

"SELECT","0"

"set","a","a1"

 

由上可知,在redis服务器上执行了set a a1命令。

1.9 redis-cli –rdb

1.10 redis-cli --pipe

将需要批量执行的命令放到一个文件中,通过redis-cli --pipe执行。

例如:

cat command1.txt|redis-cli -h 10.3.34.101-p 6378 --pipe

 

1.11 找到内存占用较大的键值redis-cli –bigkeys

--bigkeys命令采用scan命令对Redis进行采样,找到内存占用较大的键值。

命令:redis-cli –bigkeys

例如:redis-cli -h 10.3.34.101 -p 6379 –bigkey

返回:

# Scanning the entire keyspace to findbiggest 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 usuallyneeded).

 

[00.00%] Biggest string found so far'token_seed' with 88 bytes

[00.00%] Biggest string found so far'tenantAuthAppMapportaltenantU001' with 5056 bytes

[00.00%] Biggest hash   found so far'IUAP_SESSION_USER:b540903b584144d38a365a1fc593ee68' with 6 fields

[00.00%] Biggest hash   found so far 'ONLINE_SESSIONS_MAP' with 28fields

 

-------- summary -------

 

Sampled 13 keys in the keyspace!

Total key length in bytes is 406 (avg len31.23)

 

Biggest string found'tenantAuthAppMapportaltenantU001' has 5056 bytes

Biggest  hash found 'ONLINE_SESSIONS_MAP' has 28 fields

 

10 strings with 9691 bytes (76.92% of keys,avg size 969.10)

0 lists with 0 items (00.00% of keys, avgsize 0.00)

0 sets with 0 members (00.00% of keys, avgsize 0.00)

3 hashs with 35 fields (23.08% of keys, avgsize 11.67)

0 zsets with 0 members (00.00% of keys, avgsize 0.00)

1.12 redis-cli –eval

1.13 检测网络延迟redis-cli –latency

Latency有三个选型,分别是—latency,--latency-history、--latency-dist

(1)      redis-cli --latency

 例如:redis-cli -h10.3.34.101 -p 6379 –latency

返回:min: 0,max: 1, avg: 0.08 (8574 samples)

 

(2)      redis-cli --latency-history

--latency的执行结果只有一条,–latency-history分时段了解延迟信息,每15秒输出一次

例如:redis-cli-h 10.3.34.101 -p 6379 –latency-history

返回:min: 0,max: 1, avg: 0.09 (1476 samples) -- 15.01 seconds range

min: 0, max: 1,avg: 0.08 (1475 samples) -- 15.00 seconds range

min: 0, max: 1,avg: 0.07 (1475 samples) -- 15.00 seconds range

min: 0, max: 2,avg: 0.09 (1475 samples) -- 15.01 seconds range

min: 0, max: 2,avg: 0.09 (1474 samples) -- 15.00 seconds range

 

(3)      redis-cli –latency-dist

 –latency-dist会使用统计图标的形式从控制台输出延迟统计信息

例如:redis-cli -h 10.3.34.101 -p 6379 –latency-dist

返回:

---------------------------------------------

. - * #          .01 .125 .25.5 milliseconds

1,2,3,...,9      from 1 to9     milliseconds

A,B,C,D,E       10,20,30,40,50  milliseconds

F,G,H,I,J       .1,.2,.3,.4,.5       seconds

K,L,M,N,O,P,Q,? 1,2,4,8,16,30,60,>60 seconds

From 0 to 100%:                   

1.14 实时获取redis重要统计信息 redis-cli –stat

命令:redis-cli –stat

例如:redis-cli -h 10.3.34.101 -p 6379 --stat

------- data ------ ---------------------load -------------------- - child -

keys      mem      clients blockedrequests            connections         

13        1.84M    3       0      40938 (+0)          312        

13        1.84M    3       0      40939 (+1)          312        

13        1.84M    3       0      40940 (+1)          312        

13        1.84M    3       0      40941 (+1)          312        

13        1.84M    3       0      40942 (+1)          312        

13        1.84M    3       0      40943 (+1)          312        

13        1.84M    3       0      40944 (+1)          312        

13        1.84M    3       0      40945 (+1)          312        

13        1.84M    3       0      40946 (+1)          312  

1.15  命令的返回结果是否原始格式 –raw 和 --noraw     

(1)--no-raw 或者正常的get命令,返回的结果必须是原始格式 

命令: redis-cli –no-raw 命令

例如:redis-cli -h 10.3.34.101 -p 6379 set a 您好

redis-cli -h 10.3.34.101 -p 6379 --raw get a

返回:"\xe6\x82\xa8\xe5\xa5\xbd"

(1)--raw 或者正常的get命令,返回的结果不是原始格式 

命令: redis-cli –raw 命令

例如:redis-cli -h 10.3.34.101 -p 6379 set a 您好

redis-cli -h 10.3.34.101 -p 6379 --raw get a

返回:您好

 

二. redis-server

Redis-server用于启动Redis服务器。可以按照如下三种方式:

2.1 默认配置启动

     执行redis-server命令,按照默认的redis.conf配置文件中的配置启动Redis,如下:


   因为默认配置无法自定义配置。所以该方式不会再生产环境中使用

2.2 运行配置启动

   在命令redis-server后加上要修改的配置名和值(可以设置多对),没有设置的将使用默认配置。

     如:redis-server --port 6389 –timeout 3000

   虽然可以自定义配置。但是如果修改的配置较多则应该保存在配置文件中,不建议使用这种方式。

2.3 配置文件启动

将配置文件写到指定的redis.conf文件里,启动时在redis-server命令后,指定配置文件的路径,则redis会按照配置文件redis.conf的配置进行启动。例如:redis-server redis.conf

2.4 内存检测

 

redis-server除了启动redis外,还有一个-test-memory选项,该命令可以用来监测当前操作系统是否能够稳定分配指定容量的内存给redis,通过这种监测可以有效避免因为内存问题造成redis崩溃。

命令:redis-server–test-memory 1024

返回:执行时间较长,当输出passedthis test时说明内存检测完毕。

 

三. redis-benchmark

redis-benchmark可以为Redis做基准性能测试,它提供了很多选项帮助开发人员测试和运维人员测试redis的相关性能。

3.1 命令详解

命令:redis-benchmark  [-c 并发数] [-n 总请求数] [–q][-r count]

选项:-c 代表客户端的并发数量(默认是50)

     -n 代表客户端请求总量(默认值是100000)

     -q 仅仅显示requests per second信息

     -r 在一个空的Redis上执行了redis-benchmark会发现只有3个键(counter:__rand_int__,mylist,key:__rand_int__),-r可以向redis中插入更多随机键,会在key、counter键上加一个12位的后缀,-r不是随机数的个数,-r 10000是指只对后四位做随机处理)

      -P 是否采用pipeline模式请求 (默认为1,不启用)

     -k 客户端是否使用keepalive 1为使用,0为不使用,默认值为1(默认采用).

      -t 可以对指定命令进行基准测试

      --csv 将结果按照csv格式输出

例如:

3.1.1 模拟100客户端的1000000次请求

命令:redis-benchmark -h 10.3.34.101 -p 6379 -c 100 -n 100000

返回:

====== MSET (10 keys) ======

 100000 requests completed in 1.01 seconds

  100parallel clients

  3bytes payload

 keep alive: 1

 

77.80% <= 1 milliseconds

99.90% <= 2 milliseconds

100.00% <= 2 milliseconds

99304.87 requests per second

 

例如上面一共执行了100000次mset操作,在1.01秒内完成,100个客户端,每个请求的数据量是3字节,77.80%的命令执行时间小于1毫秒,redis每秒可以处理99304.87次mset请求。

3.1.2 模拟100客户端的1000000次请求,仅仅显示requests persecond信息

命令:redis-benchmark -h 10.3.34.101 -p 6379 -c 100 -n 100000 –q

PING_INLINE: 116279.06 requests per second

PING_BULK: 116279.06 requests per second

SET: 117647.05 requests per second

GET: 112359.55 requests per second

INCR: 112359.55 requests per second

LPUSH: 111111.11 requests per second

RPUSH: 113636.37 requests per second

LPOP: 120481.93 requests per second

RPOP: 119047.62 requests per second

SADD: 117647.05 requests per second

SPOP: 113636.37 requests per second

LPUSH (needed to benchmark LRANGE): 116279.06 requests per second

LRANGE_100 (first 100 elements): 50000.00 requests per second

LRANGE_300 (first 300 elements): 20242.92 requests per second

LRANGE_500 (first 450 elements): 14556.04 requests per second

LRANGE_600 (first 600 elements): 11074.20 requests per second

MSET (10 keys): 103092.78 requests per second

3.1.3 模拟100客户端的1000000次请求,并生成随机键

redis-benchmark -h 10.3.34.101 -p 6379 -c100 -n 100000 –r 10000

16289) "counter:000000004391"

16290) "key:000000007747"

16291) "counter:000000006174

………………………….…

3.1.4 采用pipeline模式请求

命令redis-benchmark -h 10.3.34.101 -p 6378 -P -c 100 -n 10000

返回:

====== 100 -n 10000 ======

 100000 requests completed in 0.85 seconds

  50parallel clients

  3bytes payload

 keep alive: 1

 

100.00% <= 0 milliseconds

117508.81 requests per second

 

 

使用管道后,效率快了很多。

(4)      只对set,get命令进行测试  redis-benchmark -h10.3.34.101 -p 6378 -P -t get set

======get set ======

  100000 requests completed in 0.85 seconds

  50 parallel clients

  3 bytes payload

  keep alive: 1

 

99.95%<= 1 milliseconds

100.00%<= 1 milliseconds

118203.30 requests per second

3.1.5 将结果以csv格式输出

命令:redis-benchmark -h 10.3.34.101 -p 6378 -c 100 -n 10000 –csv

返回:

"PING_INLINE","114942.53"

"PING_BULK","111111.11"

"SET","100000.00"

"GET","111111.11"

"INCR","112359.55"

"LPUSH","116279.06"

"RPUSH","111111.11"

"LPOP","116279.06"

"RPOP","113636.37"

"SADD","117647.05"

"SPOP","116279.06"

"LPUSH (needed to benchmark LRANGE)","116279.06"

"LRANGE_100 (first 100 elements)","50761.42"

"LRANGE_300 (first 300 elements)","20040.08"

"LRANGE_500 (first 450 elements)","14409.22"

"LRANGE_600 (first 600 elements)","11350.74"

"MSET (10 keys)","101010.10"