玩过redis的朋友都知道,redis中有一个叫做redis-cli的小工具,我们可以利用它在test和develop环境下进行高效的模拟测试,然而在现实环境中,
我们只知道直接键入redis-cli启动命令的交互式,而这个对redis-cli来说绝对是九牛一毛,下面我逐一给大家演示下。
一:非REPL (Read Eval Print Loop) 模式
通常我们都是使用REPL模式,就是连接上端口之后,发一条request再等待response这样一个loop的形式,如下所示:
[root@localhost Desktop]# redis-cli -h 192.168.1.216192.168.1.216:6379> set username jackOK192.168.1.216:6379> set password 12345OK192.168.1.216:6379>
其实我还可以直接在命令行中使用redis-cli再配合各种附加参数,效果和上面图示是一模一样的,比如下面这样:
[root@localhost Desktop]# redis-cli -h 192.168.1.216 set username jackOK[root@localhost Desktop]# redis-cli -h 192.168.1.216 set password 12345OK[root@localhost Desktop]#
看到没有,这样也是可以的,是不是有点意思哈~~~
二:从本地文件中执行命令导入
乍一看还是挺酷的,就是可以把本地文件中的一组redis命令直接导入到redis-cli中执行,这样也就免去了一行一行的去键入了,对不对,工作量可以
大大的减轻,比如下面这样:
1. 首先找一个目录,这里就选择/usr/, 下面新建一个txt文件,命令还是非常的简单,执行两个set操作。
然后我们用 < 命令导入就可以了,这里126的ip是本地局域网内的一台虚拟机,是不是有点像pipeline管道操作,牛逼吧~~~ 如下所示:
[root@localhost Desktop]# redis-cli -h 192.168.1.216 < /usr/1.txtOKOK[root@localhost Desktop]#
三:对指定redis命令重复调用
对指定的redis命令进行重复调用,乍一看也没什么用处,但是如果你调用info命令会是咋样的呢??? 你肯定会想到,我操,监控对不对???好吧,
猜对了,命令格式如下:
redis-cli -rand -i command
其中-r 是repeat的次数,-i是delay的sencond的秒数,那接下来我演示一下啊,调用info命令10次,每次延迟1s,如下所示:
[root@localhost Desktop]# redis-cli -h 192.168.1.216 -r 10 -i 1 INFO# Serverredis_version:3.2.4redis_git_sha1:00000000redis_git_dirty:0redis_build_id:fc9ad9a14d3a0fb5redis_mode:standaloneos:Linux 3.10.0-327.el7.x86_64 x86_64arch_bits:64multiplexing_api:epollgcc_version:4.8.5process_id:6171run_id:8d1d5cffbf81e31c6c6e0bd144186e9df9fea482tcp_port:6379uptime_in_seconds:3536932uptime_in_days:40hz:10lru_clock:5049094executable:/etc/redis/redis-serverconfig_file:/etc/redis/6379.conf# Clientsconnected_clients:7client_longest_output_list:0client_biggest_input_buf:0blocked_clients:0# Memoryused_memory:1295512used_memory_human:1.24Mused_memory_rss:10395648used_memory_rss_human:9.91Mused_memory_peak:35199336used_memory_peak_human:33.57Mtotal_system_memory:2099109888total_system_memory_human:1.95Gused_memory_lua:37888used_memory_lua_human:37.00Kmaxmemory:0maxmemory_human:0Bmaxmemory_policy:noevictionmem_fragmentation_ratio:8.02mem_allocator:jemalloc-4.0.3# Persistenceloading:0rdb_changes_since_last_save:0rdb_bgsave_in_progress:0rdb_last_save_time:1481443658rdb_last_bgsave_status:okrdb_last_bgsave_time_sec:0rdb_current_bgsave_time_sec:-1aof_enabled:0aof_rewrite_in_progress:0aof_rewrite_scheduled:0aof_last_rewrite_time_sec:-1aof_current_rewrite_time_sec:-1aof_last_bgrewrite_status:okaof_last_write_status:ok...
可以看到,命令一下子就刷出来了很多,有点眼花缭乱,一般来说我只关注的是used_memory_human字段,也就仅仅需要知道当然redis占用了多少内存
就完事了,所以这里我需要grep一下:
[root@localhost Desktop]# redis-cli -h 192.168.1.216 -r 10 -i 1 INFO | grep used_memory_humanused_memory_human:1.24Mused_memory_human:1.24Mused_memory_human:1.24Mused_memory_human:1.24Mused_memory_human:1.24Mused_memory_human:1.24Mused_memory_human:1.24Mused_memory_human:1.24Mused_memory_human:1.24Mused_memory_human:1.24M[root@localhost Desktop]#
可以清楚的看到,当前memory_human占用1.24M对吧。。。是不是有一种监控的效果呢?
四:--stat完整版监控
其实上面的这个监控还仅仅算是一个极简的版本,可能不能满足有些朋友的需求,比如你就看不到当前的redis中有多少的keys,有多少的clients,有多少
被blocked,有多少requests等等信息,如果这些都有了,是不是有点像mongodb中的mongostats呢?哈哈,下面我就迫不及待的给大家来演示一下吧,
非常的简单。。。
[root@localhost Desktop]# redis-cli -h 192.168.1.216 --stat------- data ------ --------------------- load -------------------- - child -keys mem clients blocked requests connections 27 1.24M 7 0 1198768 (+0) 2206 27 1.24M 7 0 1198769 (+1) 2206 27 1.24M 7 0 1198770 (+1) 2206 27 1.24M 7 0 1198771 (+1) 2206 27 1.24M 7 0 1198772 (+1) 2206 27 1.24M 7 0 1198773 (+1) 2206 27 1.24M 7 0 1198774 (+1) 2206 27 1.24M 7 0 1198775 (+1) 2206 27 1.24M 7 0 1198776 (+1) 2206 27 1.24M 7 0 1198777 (+1) 2206 27 1.24M 7 0 1198778 (+1) 2206 27 1.24M 7 0 1198779 (+1) 2206 27 1.24M 7 0 1198780 (+1) 2206 27 1.27M 7 0 1198782 (+2) 2206 27 1.24M 7 0 1198783 (+1) 2206 27 1.24M 7 0 1198784 (+1) 2206 27 1.24M 7 0 1198785 (+1) 2206
看到没有,是不是非常的牛逼,一目了然。
好了,更多的好功能,等待大家去挖掘吧,希望本篇对大家有帮助~~~