使用redis shell可以完成許多有意思的操作,使用也非常的簡單,下面開始介紹。
redis-cli
redis-cli的選項非常多,除了常用的-h、-p、-a外,下面在介紹幾個很常用的選項。想查看所有選項的話可以使用redis-cli –help查看。
–version查看redis版本
#?redis-cli?--version redis-cli?5.0.5
可以看到我當(dāng)前的版本是5.0.5
-r,-i
r是repeat的縮寫,表示重復(fù)幾次的意思。i是interval的縮寫,表示間隔多久(單位為妙)。
比如執(zhí)行ping命令,共執(zhí)行3次,每隔一秒執(zhí)行一次。
#?redis-cli?-r?3?-i?1?ping
另外我們再介紹一個redis的api info memory,它是用來統(tǒng)計redis內(nèi)存使用情況的。
#?redis-cli?info?memory #?Memory used_memory:878984 used_memory_human:858.38K used_memory_rss:3796992 used_memory_rss_human:3.62M ……
統(tǒng)計redis內(nèi)存信息
介紹了上面的知識后,再結(jié)合shell基礎(chǔ),就可以寫出一個統(tǒng)計redis內(nèi)存占用的腳本了。
shell腳本如下,每5秒獲取內(nèi)存信息,共取6次。
#!/bin/bash memorys=`redis-cli?-r?6?-i?5??info?memory?|?grep?used_memory: ????|?awk?-F:?'{print?int($2)}'` total=0 for?memory?in?$memorys do ????echo?$memory ????total=$((memory+total)) done echo?"avg:"$((total/6))
有一個地方需要注意,在awk那行,需要用int轉(zhuǎn)換為數(shù)字類型,否則循環(huán)里面的遞增將會出錯,必須保證變量memory是數(shù)字類型的。腳本的執(zhí)行結(jié)果如下:
#?./bin/redis-used-memory.sh? 883480 883504 883504 883504 883504 883504 avg:883500
分別輸出6個請求的數(shù)據(jù),最后再打印出平均值。
–rdb 保存rdb文件到本地
有個該選項,再配合定時任務(wù),我們就可以定期備份Redis數(shù)據(jù)。
#?redis-cli?--rdb?/data/redis/rdb/dump.rdb SYNC?sent?to?master,?writing?721?bytes?to?'/data/redis/rdb/dump.rdb' Transfer?finished?with?success.
如果redis含有重要數(shù)據(jù)的話,那么建議定時備份數(shù)據(jù),防止數(shù)據(jù)丟失后損失太大。
Redis-benchmark
redis有專門做基準(zhǔn)測試的工具,我們可以用它來測試redis的性能。下面介紹幾個常用選項。如想知道更多的選項的用法,使用redis-benchmark –help查看更多信息
-c(clients)
表示客戶端的并發(fā)數(shù)量,默認(rèn)為50.
-n(requests)
表示客戶端請求總量,默認(rèn)值為100000。
例如,有100個客戶端,總請求數(shù)為10000.
#?redis-benchmark?-c?100?-n?10000
-q
只顯示每秒的請求數(shù)據(jù)
redis-benchmark?-c?100?-n?10000?-q? PING_INLINE:?98039.22?requests?per?second PING_BULK:?102040.82?requests?per?second SET:?94339.62?requests?per?second GET:?99009.90?requests?per?second ……
可以看到,每秒set、get等命令的性能。
-t
對指定的命令進(jìn)行基準(zhǔn)測試,比如我只想看get和set的性能如何:
#?redis-benchmark?-t?get,set?-q SET:?98911.96?requests?per?second GET:?100200.40?requests?per?second