redis-cli中那些或许我们还不知道的一些实用小功能

news/2024/7/9 19:21:14 标签: 数据库, epoll, 操作系统

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

 

其实我还可以直接在命令行中使用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 12345
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/1.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 10 -i 1 INFO
# Server
redis_version:3.2.4
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:fc9ad9a14d3a0fb5
redis_mode:standalone
os:Linux 3.10.0-327.el7.x86_64 x86_64
arch_bits:64
multiplexing_api:epoll
gcc_version:4.8.5
process_id:6171
run_id:8d1d5cffbf81e31c6c6e0bd144186e9df9fea482
tcp_port:6379
uptime_in_seconds:3536932
uptime_in_days:40
hz:10
lru_clock:5049094
executable:/etc/redis/redis-server
config_file:/etc/redis/6379.conf

# Clients
connected_clients:7
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0

# Memory
used_memory:1295512
used_memory_human:1.24M
used_memory_rss:10395648
used_memory_rss_human:9.91M
used_memory_peak:35199336
used_memory_peak_human:33.57M
total_system_memory:2099109888
total_system_memory_human:1.95G
used_memory_lua:37888
used_memory_lua_human:37.00K
maxmemory:0
maxmemory_human:0B
maxmemory_policy:noeviction
mem_fragmentation_ratio:8.02
mem_allocator:jemalloc-4.0.3

# Persistence
loading:0
rdb_changes_since_last_save:0
rdb_bgsave_in_progress:0
rdb_last_save_time:1481443658
rdb_last_bgsave_status:ok
rdb_last_bgsave_time_sec:0
rdb_current_bgsave_time_sec:-1
aof_enabled:0
aof_rewrite_in_progress:0
aof_rewrite_scheduled:0
aof_last_rewrite_time_sec:-1
aof_current_rewrite_time_sec:-1
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 10 -i 1 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          
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        

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

 

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

转载于:https://www.cnblogs.com/huangxincheng/p/6159890.html


http://www.niftyadmin.cn/n/687775.html

相关文章

PHP开发之旅-验证码功能实现

验证码这样的功能可以说是无处不在了&#xff0c;接下来使用php来实现验证码这样的功能&#xff0c;这里我是将验证码实现抽取到一个类中独立开来&#xff0c;那么后面如果再使用到验证码功能&#xff0c;直接引入该类文件并创建该类的实例&#xff0c;就可以使用验证码了&…

python3基础10(操作日志)

#!/usr/bin/env python# -*- coding:UTF-8 -*-import logging, time, os# 这个是日志保存本地的路径log_path "D:\\ideaSpace\\autoProject\\autotest\\nicetime"class Log: def __init__(self): # 文件的命名 self.logname os.path.join(log_pat…

Android学习笔记进阶九之Matrix对称变换

网上很多的倒影特效实际上就是一个对称变换&#xff0c;在改变透明度即可。 Matrix对称变换包括很多种&#xff0c;有关于Y轴对称&#xff0c;关于X轴对称&#xff0c;关于y -x对称等等。 1 关于Y轴对称 [java] view plaincopy// 获取资源文件的引用res Resources res…

mac lamp mysql 配置_搭建LAMP环境_mac使用php和mysql通信

1.mac 是自带apache/php &#xff0c;启动apache : apachectl start . 开启php的话&#xff0c;在apache的配置文件, 取消对php.so的注释即可。2.测试 apache是否启动: 在浏览器中输入 " localhost ", 浏览器显示" It Works! ",则表示启动成功.3.测试…

广义表取表头表尾_广义表的深度和长度(C语言)详解

前面学习了广义表及其对应的存储结构&#xff0c;本节来学习如何计算广义表的深度和长度&#xff0c;以及如何编写相应的 C 语言实现程序。广义表的长度广义表的长度&#xff0c;指的是广义表中所包含的数据元素的个数。由于广义表中可以同时存储原子和子表两种类型的数据&…

python3爬虫例子01(获取个人博客园的粉丝)

#!/usr/bin/env python# -*- coding:UTF-8 -*- import requestsfrom selenium import webdriverfrom bs4 import BeautifulSoupimport reimport timeclass GetFansName: #初始化各配置项数值 def __init__(self, profiles, url, ses, sleepTime, fansNameFile): s…

python3爬虫例子02(获取个人博客园的文章信息)

#!/usr/bin/env python# -*- coding:UTF-8 -*-import requestsfrom bs4 import BeautifulSoupresrequests.get("https://www.cnblogs.com/NiceTime/")# cres.contentcres.text# print(c)#获取文章日期soupBeautifulSoup(c,"html.parser")postdaysoup.find_…

[整理]一个有关Latch(锁存器)的有趣问题

起源 今天诳论坛&#xff0c;突然发现了一个有关latch的问题&#xff0c;由于对D Flip-Flop和Latch还有些疑问&#xff0c;就点击了进去&#xff0c;一看果然有些意思&#xff0c;也挺有学习意义的&#xff0c;于是本文就诞生了。喊出口号~Just note it. 有意思的问题图 两个问…