一、慢查詢分析(查詢日誌:所謂慢查詢日誌就是系統在命令執行前後計算每條命令的執行時間,當超過預設閥值,就將這條命令的相關資訊(例如:發生時間,耗時,命令的詳細資訊)記錄下來,redis也提供了類似的功能。)
redis客戶端執行一條命令分為如下4個部分:1)傳送命令 2)命令排隊 3)命令執行 4)返回結果
(需要注意,慢查詢只統計步驟3的時間,所以沒有慢查詢並不代表客戶端沒有超時問題。)
1、慢查詢引數配置:
·預設閥值怎麼設定?(slowlog-log-slower-than)
(它的單位是微秒(1秒=1000毫秒=1000000微秒),預設值是10000,假如執行了一條「很慢」的命令(例如keys*),如果它的執行時間超過了10000微秒,那麼它將被記錄在慢查詢日誌中)
·慢查詢記錄存放在哪?(slowlog-max-len)
(實際上redis使用了乙個列表來儲存慢查詢日誌,slowlog-max-len就是列表的最大長度。乙個新的命令滿足慢查詢條件時被插入到這個列表中,當慢查詢日誌列表已處於其最大長度時,最早插入的乙個命令將從列表中移出,例如slowlog-max-len設定為5,當有第6條慢查詢插入的話,那麼隊頭的第一條資料就出列,第6條慢查詢就會入列)
2、在redis中有兩種修改配置的方法,一種是修改配置檔案,另一種是使用config set命令動態修改。
例如下面使用config set命令將slowlog-log-slower-than設定為20000微秒,slowlog-max-len設定為1000:
3、慢查詢日誌的訪問和管理
雖然慢查詢日誌是存放在列表中的,但redis並沒有暴露這個鍵,而是通過一組命令來實現對慢查詢日誌的訪問和管理:
4、最佳實踐:
慢查詢功能可以有效地幫助我們找到redis可能存在的瓶頸,但在實際使用過程中要注意以下幾點:
二、redis shell(redis提供了redis-cli、redis-server、redis-benchmark等shell工具它們雖然比較簡單,但是麻雀雖小五臟俱全,有時可以很巧妙地解決一些問題)
1、redis-cli
2、redis-server(redis-server除了啟動redis外,還有乙個--test-memory選項。redis-server--test-memory可以用來檢測當前作業系統能否穩定地分配指定容量的記憶體給redis,通過這種檢測可以有效避免因為記憶體問題造成redis崩潰)
3、redis-benchmark(redis-benchmark可以為redis做基準效能測試,它提供了很多選項幫助開發和運維人員測試redis的相關效能,下面分別介紹這些選項。)
三、pipeline
redis提供了批量操作命令(例如mget、mset等),有效地節約rtt。但大部分命令是不支援批量操作的,例如要執行n次hgetall命令,並沒有mhgetall命令存在,需要消耗n次rtt。pipeline(流水線)機制能改善上面這類問題,它能將一組redis命令進行組裝,通過一次rtt傳輸給redis,再將這組redis命令的執行結果按順序返回給客戶端,redis-cli的--pipe選項實際上就是使用pipeline機制,目前大部分redis客戶端都支援pipeline。
可以使用pipeline模擬出批量操作的效果,但是在使用時要注意它與原生批量命令的區別,具體包含以下幾點:
最佳實踐:pipeline雖然好用,但是每次pipeline組裝的命令個數不能沒有節制,否則一次組裝pipeline資料量過大,一方面會增加客戶端的等待時間,另一方面會造成一定的網路阻塞,可以將一次包含大量命令的pipeline拆分成多次較小的pipeline來完成
四、事務與lua
127.0.0.1:6379>multiok127.0.0.1:6379>set name rdb
queued
127.0.0.1:6379> set age 12queued
127.0.0.1:6379>exec
1) ok
2) ok
127.0.0.1:6379>
2、lua指令碼
在redis中執行lua指令碼有兩種方法:eval和evalsha。
Redis的小功能
redis的小功能 慢日誌查詢就是系統在命令執行前後計算每條命令的執行時間,當超過閾值,便相關命令的資訊記錄下來。兩個配置引數 1.slowlog log slower than 預設閾值,單位為微妙 1秒 1000毫秒 1000000微秒 預設10000。如果 0會記錄所有的命令,0不會記錄任何命...
iOS常用小功能
這些功能比較實用,而且實現的 也比較簡單 此方式打完 不會返回應用介面,而是停留在打 介面 nsurl url nsurl urlwithstring tel 10086 此方法撥號之前會提示是否撥號,打完 後會回到應用介面,但是因為是私有api,蘋果不建議使用 nsurl url nsurl ur...
JS常用小功能
個人部落格 常用小功能 陣列去重 字串反轉 陣列去扁平化並去重排序 判斷陣列的方法 陣列並集 交集 差集 var arr1 1 2,3 4 var arr2 2 4,6 8 使用includes var union arr1.concat arr2.filter v arr1.includes v ...