Redis-Cli 的功能太強(qiáng)大了,你真的了解嗎?
玩過redis的朋友應(yīng)該都知道有一個(gè)叫做 redis-cli 的客戶端小工具,在實(shí)際開發(fā)中相信很多人只知道用 redis-cli 進(jìn)行 REPL 式的交互,其實(shí)這只是一個(gè)非常小的子集,比如利用它可以在test和develop環(huán)境下進(jìn)行高效的模擬測試,接下來我逐一給大家演示下。
一:非REPL (Read Eval Print Loop) 模式
通常我們都是使用REPL模式,就是連接端口之后,發(fā)一條 request 再等待 response 這樣一個(gè)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>
其實(shí)我還可以直接在命令行中使用 redis-cli 再配合各種附加參數(shù),效果和上面是一模一樣的,比如下面這樣:
- [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]#
看到?jīng)]有,是不是有點(diǎn)意思哈~~~
二:從本地文件中執(zhí)行命令導(dǎo)入
這功能還是挺酷的,你可以把本地文件中的一組redis命令直接導(dǎo)入到 redis-cli 中執(zhí)行,免去了一行一行鍵入之苦,對不對,工作量可是大大的減輕了哈,參照下面流程。
1. 新建目錄
在 /usr/ 下面新建一個(gè)txt文件,執(zhí)行兩個(gè)set操作。
然后用 < 命令導(dǎo)入就可以了,這里216的ip是本地局域網(wǎng)內(nèi)的一臺虛擬機(jī),是不是有點(diǎn)像pipeline管道操作,🐂👃吧~~~ 如下所示:
- [root@localhost Desktop]# redis-cli -h 192.168.1.216 < /usr/1.txt
- OK
- OK
- [root@localhost Desktop]#
三:對指定的redis命令重復(fù)調(diào)用
乍一聽貌似沒啥業(yè)務(wù)場景,仔細(xì)想想還是有的,比如說不斷的調(diào)用 info 命令,這就是一個(gè)好的監(jiān)控,對不對?命令格式如下:
- redis-cli -r <count> and -i <delay> command
其中 -r 是 repeat 的次數(shù),-i 是 delay 的 sencond 的秒數(shù),接下來我演示一下,調(diào)用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
- ...
這么多輸出,有點(diǎn)眼花繚亂,大多時(shí)候我只關(guān)注 used_memory_human 字段,看看當(dāng)前 redis 占用了多少內(nèi)存,這里就可以用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]#
可以清楚的看到,當(dāng)前 memory_human 占用 1.24M,一個(gè)麻雀式的監(jiān)控就來了!
四:--stat完整版監(jiān)控
如果只有一個(gè)內(nèi)存占用指標(biāo)肯定不能滿足大家的實(shí)際需求,比如你就看不到當(dāng)前的redis中有多少的keys,有多少的clients,有多少被blocked,有多少requests等等信息,如果這些都有了,是不是有點(diǎn)像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
本文轉(zhuǎn)載自微信公眾號「一線碼農(nóng)聊技術(shù)」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系一線碼農(nóng)聊技術(shù)公眾號。