玩过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.216
192.168.1.216:> set username jack
OK
192.168.1.216:> set password
OK
192.168.1.216:>

其实我还可以直接在命令行中使用redis-cli再配合各种附加参数,效果和上面图示是一模一样的,比如下面这样:

[root@localhost Desktop]# redis-cli -h 192.168.1.216 set username jack
OK
[root@localhost Desktop]# redis-cli -h 192.168.1.216 set password
OK
[root@localhost Desktop]#

看到没有,这样也是可以的,是不是有点意思哈~~~

二:从本地文件中执行命令导入

乍一看还是挺酷的,就是可以把本地文件中的一组redis命令直接导入到redis-cli中执行,这样也就免去了一行一行的去键入了,对不对,工作量可以

大大的减轻,比如下面这样:

1. 首先找一个目录,这里就选择/usr/, 下面新建一个txt文件,命令还是非常的简单,执行两个set操作。

然后我们用 < 命令导入就可以了,这里126的ip是本地局域网内的一台虚拟机,是不是有点像pipeline管道操作,牛逼吧~~~ 如下所示:

[root@localhost Desktop]# redis-cli -h 192.168.1.216 < /usr/.txt
OK
OK
[root@localhost Desktop]#

三:对指定redis命令重复调用

  对指定的redis命令进行重复调用,乍一看也没什么用处,但是如果你调用info命令会是咋样的呢??? 你肯定会想到,我操,监控对不对???好吧,

猜对了,命令格式如下:

redis-cli -r <count> and -i <delay> command

其中-r 是repeat的次数,-i是delay的sencond的秒数,那接下来我演示一下啊,调用info命令10次,每次延迟1s,如下所示:

[root@localhost Desktop]# redis-cli -h 192.168.1.216 -r  -i  INFO
# Server
redis_version:3.2.
redis_git_sha1:
redis_git_dirty:
redis_build_id:fc9ad9a14d3a0fb5
redis_mode:standalone
os:Linux 3.10.-.el7.x86_64 x86_64
arch_bits:
multiplexing_api:epoll
gcc_version:4.8.
process_id:
run_id:8d1d5cffbf81e31c6c6e0bd144186e9df9fea482
tcp_port:
uptime_in_seconds:
uptime_in_days:
hz:
lru_clock:
executable:/etc/redis/redis-server
config_file:/etc/redis/.conf # Clients
connected_clients:
client_longest_output_list:
client_biggest_input_buf:
blocked_clients: # Memory
used_memory:
used_memory_human:1.24M
used_memory_rss:
used_memory_rss_human:9.91M
used_memory_peak:
used_memory_peak_human:33.57M
total_system_memory:
total_system_memory_human:.95G
used_memory_lua:
used_memory_lua_human:.00K
maxmemory:
maxmemory_human:0B
maxmemory_policy:noeviction
mem_fragmentation_ratio:8.02
mem_allocator:jemalloc-4.0. # Persistence
loading:
rdb_changes_since_last_save:
rdb_bgsave_in_progress:
rdb_last_save_time:
rdb_last_bgsave_status:ok
rdb_last_bgsave_time_sec:
rdb_current_bgsave_time_sec:-
aof_enabled:
aof_rewrite_in_progress:
aof_rewrite_scheduled:
aof_last_rewrite_time_sec:-
aof_current_rewrite_time_sec:-
aof_last_bgrewrite_status:ok
aof_last_write_status:ok
...

可以看到,命令一下子就刷出来了很多,有点眼花缭乱,一般来说我只关注的是used_memory_human字段,也就仅仅需要知道当然redis占用了多少内存

就完事了,所以这里我需要grep一下:

[root@localhost Desktop]# redis-cli -h 192.168.1.216 -r  -i  INFO | grep used_memory_human
used_memory_human:1.24M
used_memory_human:1.24M
used_memory_human:1.24M
used_memory_human:1.24M
used_memory_human:1.24M
used_memory_human:1.24M
used_memory_human:1.24M
used_memory_human:1.24M
used_memory_human:1.24M
used_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
1.24M (+)
1.24M (+)
1.24M (+)
1.24M (+)
1.24M (+)
1.24M (+)
1.24M (+)
1.24M (+)
1.24M (+)
1.24M (+)
1.24M (+)
1.24M (+)
1.24M (+)
1.27M (+)
1.24M (+)
1.24M (+)
1.24M (+)

看到没有,是不是非常的牛逼,一目了然。

好了,更多的好功能,等待大家去挖掘吧,希望本篇对大家有帮助~~~

redis-cli中那些或许我们还不知道的一些实用小功能的更多相关文章

  1. [转载]或许您还不知道的八款Android开源游戏引擎

    或许您还不知道的八款Android开源游戏引擎         分类:             技术文章              2010-08-04 20:27     17430人阅读     ...

  2. 或许您还不知道的八款Android开源游戏引擎

    很多初学Android游戏开发的朋友,往往会显得有些无所适从,他们常常不知道该从何处入手,每当遇到自己无法解决的难题时,又往往会一边羡慕于iPhone下有诸如Cocos2d-iphone之类的免费游戏 ...

  3. 90% 前端开发者都不知道的 JavaScript 实用小技巧

    面试神器之数组去重 const a = [...new Set([1, 2, 3, 3])] >> [1, 2, 3] 操作数组担心 falsy 值? const res = myArra ...

  4. JS你可能还不知道的一些知识点(一)

    js程序是用Unicode字符集编写的, 2.转义字符:反斜线 1 2 3 4 function Test(){   var s='you\'re right,it can\'t be a quote ...

  5. Android中Context详解 ---- 你所不知道的Context

    转自:http://blog.csdn.net/qinjuning/article/details/7310620Android中Context详解 ---- 你所不知道的Context 大家好,  ...

  6. Android中Context详解 ---- 你所不知道的Context(转)

    Android中Context详解 ---- 你所不知道的Context(转)                                               本文出处 :http://b ...

  7. 四次挥手中你还不知道的ACK机制

    为面试做准备中. 后面有对ACK机制的详细讲解. 四次挥手比较好解释. 看一下我的草图. ACK表示发来的数据已确认接收无误. 图中一个箭头代表一次挥手. 第一次挥手: 主动关闭方:发送一个FIN,表 ...

  8. html你可能还不知道的一些知识点

    一.标签语义化 html标签语义化是让大家直观的认识标签和属性的用途和作用,好处最主要的是对搜索引擎友好. Eg: 1.如果你想在页面中突出"奥巴马"这三个字,让搜索引擎重视它,如 ...

  9. jdk1.8新特性,还不知道的朋友还不看看,1.9都快出来了

    一.接口的默认方法 Java 8允许我们给接口添加一个非抽象的方法实现,只需要使用 default关键字即可,这个特征又叫做扩展方法,示例如下:代码如下:interface Formula {     ...

随机推荐

  1. GIT服务器的四种协议

    本地协议 最基本的就是_本地协议(Local protocol)_,所谓的远程仓库在该协议中的表示,就是硬盘上的另一个目录.这常见于团队每一个成员都对一个共享的文件系统(例如 NFS)拥有访问权,或者 ...

  2. 【Win 10 应用开发】UDP广播

    我们知道,对于UDP协议的通信,除了可以用来聊天外,可以发送广播数据.只要向广播地址的某个端口发送数据就可以进行广播,子网中只要监听该端口的socket就能收到广播消息. 最简单的方法就是向255.2 ...

  3. TextView使用大全

    最近打算写一个系列的android初级开发教程,预计40篇以上的文章,结合我实际工作中的经验,写一些工作中经常用到的技术,让初学者可以少走弯路,写一个系列的话,大家学习起来也有头有尾. 今天就从我们每 ...

  4. SpringMVC中定时任务配置

    在项目中使用定时任务是常有的事,比如每天定时进行数据同步或者备份等等. 以前在从事C语言开发的时候,定时任务都是通过写个shell脚本,然后添加到linux定时任务中进行调度的. 现在使用Spring ...

  5. C++服务器开发之笔记三

    为什么需要原子性操作? 我们考虑一个例子:(1)x++这个常见的运算符在内存中是怎样操作的?从内存中读x的值到寄存器中,对寄存器加1,再把新值写回x所处的内存地址 若是有两个线程同时对同一个变量++, ...

  6. 2.JAVA之GUI编程布局

    布局管理器 容器中的组件排放方式,就是布局 常见的布局管理器: **************************************************** 1.FlowLayout(流式 ...

  7. Signalr系列之虚拟目录详解与应用中的CDN加速实战

    目录 对SignalR不了解的人可以直接移步下面的目录 SignalR系列目录 前言 前段时间一直有人问我 在用SignalR 2.0开发客服系统[系列1:实现群发通讯]这篇文章中的"/Si ...

  8. 存在即合理,重复轮子orm java版本

    1,业务描述前序? 需求来源于,公司的运营部门.本人所在公司(私营,游戏行业公司),从初创业,我就进入公司,一直致力于服务器核心研发. 公司成立块3年了,前后出产了4款游戏,一直在重复的制造公司游戏对 ...

  9. 【无私分享:ASP.NET CORE 项目实战(第十四章)】图形验证码的实现

    目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 很长时间没有来更新博客了,一是,最近有些忙,二是,Core也是一直在摸索中,其实已经完成了一个框架了,并且正在准备在生产环境中 ...

  10. JsCharts图表的介绍和简单使用

    一.JSCharts介绍 JScharts是一个用于在浏览器直接绘制图表的javascript工 具包.JScharts支持柱状图.圆饼图以及线性图,可以直接将这个图插入网页, JScharts图的数 ...