Redis小功能特性

·慢查詢分析:通過慢查詢分析,找到有問題的命令進行優(yōu)化。

·Redis Shell:功能強大的Redis Shell會有意想不到的實用功能。

·Pipeline:通過Pipeline(管道或者流水線)機制有效提高客戶端性能。

·事務與Lua:制作自己的專屬原子命令。

·Bitmaps:通過在字符串數(shù)據(jù)結構上使用位操作,有效節(jié)省內存,為開

發(fā)提供新的思路。

·HyperLogLog:一種基于概率的新算法,難以想象地節(jié)省內存空間。

·發(fā)布訂閱:基于發(fā)布訂閱模式的消息通信機制。

·GEO:Redis3.2提供了基于地理位置信息的功能。

3.1 慢查詢分析

Redis提供了slowlog-log-slower-than和slowlog-max-len配置來解決這兩個問題。從字面意思就可以看出,slowlog-log-slower-than就是那個預設閥值,它的單位是微秒(1秒=1000毫秒=1000000微秒),默認值是10000,假如執(zhí)行了一條“很慢”的命令(例如keys*),如果它的執(zhí)行時間超過了10000微秒,那么它將被記錄在慢查詢日志中。

如果slowlog-log-slower-than=0會記錄所有的命令,slowlog-log-slower-than<0對于任何命令都不會進行記錄。從字面意思看,slowlog-max-len只是說明了慢查詢日志最多存儲多少條,并沒有說明存放在哪里?實際上Redis使用了一個列表來存儲慢查詢日志,slowlog-max-len就是列表的最大長度。一個新的命令滿足慢查詢條件時被插入到這個列表中,當慢查詢日志列表已處于其最大長度時,最早插入的一個命令將從列表中移出,例如slowlog-max-len設置為5,當有第6條慢查詢插入的話,那么隊頭的第一條數(shù)據(jù)就出列,第6條慢查詢就會入列。

在Redis中有兩種修改配置的方法,一種是修改配置文件,另一種是使用config set命令動態(tài)修改。例如下面使用config set命令將slowlog-log-slower-than設置為20000微秒,slowlog-max-len設置為1000:

config set slowlog-log-slower-than 20000

config set slowlog-max-len 1000

config rewrite

slowlog get

slowlog len

slowlog reset

3.2 Redis Shell

redis-cli詳解:

redis-cli --help查看幫助

-r(repeat)選項代表將命令執(zhí)行多次

-i(interval)選項代表每隔幾秒執(zhí)行一次命令

-a(auth)選項,有了這個選項就不需要手動輸入auth命令

--scan選項和--pattern選項用于掃描指定模式的鍵,相當于使用scan命令

-slave選項是把當前客戶端模擬成當前Redis節(jié)點的從節(jié)點,可以用來獲取當前Redis節(jié)點的更新操作

--rdb選項會請求Redis實例生成并發(fā)送RDB持久化文件,保存在本地??墒褂盟龀志没募亩ㄆ趥浞?/p>

--pipe選項用于將命令封裝成Redis通信協(xié)議定義的數(shù)據(jù)格式,批量發(fā)送給Redis執(zhí)行

--bigkeys選項使用scan命令對Redis的鍵進行采樣,從中找到內存占用比較大的鍵值,這些鍵可能是系統(tǒng)的瓶頸

--eval選項用于執(zhí)行指定Lua腳本

--latency、--latency-history、--latency-dist。它們都可以檢測網(wǎng)絡延遲,對于Redis的開發(fā)和運維非常有幫助

--stat選項可以實時獲取Redis的重要統(tǒng)計信息,雖然info命令中的統(tǒng)計信息更全,但是能實時看到一些增量的數(shù)據(jù)(例如requests)對于Redis的運維還是有一定幫助的

--no-raw選項是要求命令的返回結果必須是原始的格式,--raw恰恰相反,返回格式化后的結果。如果使用了--raw選項,將會返回中文,原始格式。

redis-server詳解:

redis-server --test-memory可以用來檢測當前操作系統(tǒng)能否穩(wěn)定地分配指定容量的內存給Redis。

redis-benchmark詳解:

-c(clients)選項代表客戶端的并發(fā)數(shù)量(默認是50)

-n(num)選項代表客戶端請求總量(默認是100000)

例如redis-benchmark-c100-n20000代表100各個客戶端同時請求Redis,一共執(zhí)行20000次。redis-benchmark會對各類數(shù)據(jù)結構的命令進行測試,并給出性能指標。

-q選項僅僅顯示redis-benchmark的requests per second信息

使用-r(random)選項,可以向Redis插入更多隨機的鍵

-P選項代表每個請求pipeline的數(shù)據(jù)量(默認為1)

-k選項代表客戶端是否使用keepalive,1為使用,0為不使用,默認值1

-t選項可以對指定命令進行基準測試

--csv選項會將結果按照csv格式輸出,便于后續(xù)處理,如導出到Excel等

3.3 Pipeline

Pipeline(流水線)機制能改善上面這類問題,它能將一組Redis命令進行組裝,通過一次RTT傳輸給Redis,再將這組Redis命令的執(zhí)行結果按順序返回給客戶端。

原生批量命令與Pipeline對比:

·原生批量命令是原子的,Pipeline是非原子的。

·原生批量命令是一個命令對應多個key,Pipeline支持多個命令。

·原生批量命令是Redis服務端支持實現(xiàn)的,而Pipeline需要服務端和客戶端的共同實現(xiàn)。

3.4 事務與Lua

Redis提供了簡單的事務功能,將一組需要一起執(zhí)行的命令放到multi和exec兩個命令之間。multi命令代表事務開始,exec命令代表事務結束,它們之間的命令是原子順序執(zhí)行的。Redis提供了簡單的事務,之所以說它簡單,主要是因為它不支持事務中的回滾特性,同時無法實現(xiàn)命令之間的邏輯關系計算。

Lua語言是在1993年由巴西一個大學研究小組發(fā)明,其設計目標是作為嵌入式程序移植到其他應用程序,它是由C語言實現(xiàn)的,Redis將Lua作為腳本語言可幫助開發(fā)者定制自己的Redis命令。

在Redis中執(zhí)行Lua腳本有兩種方法:eval和evalsha。

3.5 Bitmaps

·Bitmaps本身不是一種數(shù)據(jù)結構,實際上它就是字符串(如圖3-10所示),但是它可以對字符串的位進行操作。

·Bitmaps單獨提供了一套命令,所以在Redis中使用Bitmaps和使用字符串的方法不太相同??梢园袯itmaps想象成一個以位為單位的數(shù)組,數(shù)組的每個單元只能存儲0和1,數(shù)組的下標在Bitmaps中叫做偏移量。

3.6 HyperLogLog

HyperLogLog并不是一種新的數(shù)據(jù)結構(實際類型為字符串類型),而是一種基數(shù)算法,通過HyperLogLog可以利用極小的內存空間完成獨立總數(shù)的統(tǒng)計,數(shù)據(jù)集可以是IP、Email、ID等。HyperLogLog提供了3個命令:pfadd、pfcount、pfmerge。

3.7 發(fā)布訂閱

publish channel message

subscribe channel [channel ...]

·客戶端在執(zhí)行訂閱命令之后進入了訂閱狀態(tài),只能接收subscribe、psubscribe、unsubscribe、punsubscribe的四個命令。

·新開啟的訂閱客戶端,無法收到該頻道之前的消息,因為Redis不會對發(fā)布的消息進行持久化。

和很多專業(yè)的消息隊列系統(tǒng)(例如Kafka、RocketMQ)相比,Redis的發(fā)布訂閱略顯粗糙,例如無法實現(xiàn)消息堆積和回溯。但勝在足夠簡單,如果當前場景可以容忍的這些缺點,也不失為一個不錯的選擇。

3.8 GEO

Redis3.2版本提供了GEO(地理信息定位)功能,支持存儲地理位置信息用來實現(xiàn)諸如附近位置、搖一搖這類依賴于地理位置信息的功能,對于需要實現(xiàn)這些功能的開發(fā)者來說是一大福音。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • ·慢查詢分析:通過慢查詢分析,找到有問題的命令進行優(yōu)化。·Redis Shell:功能強大的Redis Shell...
    何何與呵呵呵閱讀 820評論 0 1
  • 這一章書本上的內容有: 慢查詢分析:通過慢查詢分析,找到有問題的命令進行優(yōu)化。 Redis Shell:功能強大的...
    super_pcm閱讀 159評論 0 0
  • Redis提供的5中數(shù)據(jù)結構已經足夠強大,但除此之外,Redis還提供了諸如慢查詢分析、功能強大的Redis Sh...
    linuxzw閱讀 582評論 0 5
  • redis除了基本的功能以后,還有許多功能有很大的用處。比如說慢查詢分析、功能強大的Redis Shell、 Pi...
    寒雨然閱讀 348評論 0 0
  • 1. 慢查詢 許多存儲系統(tǒng)(例如MySQL)提供慢查詢日志幫助開發(fā)和運維人員定位系統(tǒng)存在的慢操作。所謂慢查詢日志就...
    云師兄閱讀 441評論 0 0

友情鏈接更多精彩內容