Redis-Shell

本文详细介绍了Redis客户端redis-cli的各种使用技巧,包括查看帮助、重复执行命令、定时执行、从标准输入读取数据、模拟从节点、内存检测、性能评估等。此外,还涉及了redis-server的启动方式和内存检测,以及redis-benchmark的性能测试方法,包括并发测试、请求总数、命令性能比较等,是深入理解Redis操作和性能优化的重要参考资料。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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"

知识小贴士:作者尽心运营的知识星球社群【请点击:简道源码&&架构分析 加入】(可添加运营同学WX:wx454876882)持续拉新中...,定期的jdk与核心框架源码解析,主流行业解决方案与架构设计资料查阅与下载尽在其中。帮助行业新人和有志于技术的专业人士体系化的学习源码与系统架构,获取业界知名技术峰会和厂商对外公布的主流业务场景的解决方案。同时这个星球也是一个社群,大家可以在社群中结识有识之士,共同探讨,答疑解惑。希望可以通过这个星球帮助大家每日进步一点点,一年持续365天,共勉

本星球 聚焦于Java源码分析,架构解析。低代码,可扩展和高可用架构设计。帮助你更好地学编程,欢迎想进步的同学!仅精品案例的资料整理即物超所值。让我们大家一起每日进步一点点~~,你可以:

1. 阅读星球专属的编程知识和优质文章

2.JAVA知识从点和面,深度挖掘。通过点,形成面。提升自身的技术广度和深度。

3. 加入星球专属交流群,帮你找到学习伙伴、获取每日优质文章推送等

4.业界优秀案例资料学习及下载

5. 和伙伴们一起学习打卡,增加动力,共同进步

6.工作、学习和方法论。如何提升软实力,比如写文章、画架构图、技术产品的营销、社区的运营等等。

7.招聘、面试和晋升。如何提前准备面试,有什么套路?如何提升硬实力,少走弯路?

8.提供简历优化服务哟。本人常年招聘,也就面试了1000+程序员和架构师~~

9.解答你的疑问。

10.每日进步一点点(最重要的一点): 让自己与众不同,每天学习1-2小时源码和架构知识,365天后再回首,1年前的自己可能是个SB吧。用通勤的时间让自己成长,让优秀变成一种习惯。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大道化简

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值