一、安全性
1、運行環境
Redis以簡潔為美,其安全性沒有太多操作,要求在生產系統中外界不能直接連接Redis進行操作,而必須經程序式中轉后,由程式進行操作,
即,redis要求運行在可信的環境中,
redis服務器啟動后,默認允許外界連接,可以修改其組態檔的bind,配置只能有一個路徑進行連接,如bind 127.0.0.1,只允許本機連接,bind只能配置一個ip,因此設定應在防火墻中進行,
2、密碼
組態檔中有requirepass,可以設定密碼,則每次連接上之后,需要先用AUTH 密碼,驗證后再進行操作,但是由于redis性能極高,因此有可能會被攻擊者用窮舉法破解,因此密碼要設定的盡量復雜,
如果主從結構的主庫設定了密碼,從庫要在組態檔中的masterauth中,輸入密碼,以便從庫正常連上主庫,
3、命令修改
redis支持在組態檔對命令進行重命名,如flushall會清空redis,可以在組態檔中輸入rename-command FLUSHALL xxxxx,這個xxxxx應該設定的足夠復雜,則要使用flushall,必須用xxxxx來代替,如果要禁用命令,直接rename成空字串即可,
二、通信協議
redis支持兩種通信協議:一是二進制安全的統一請求協議;二是比較直觀的便于在程式中直接輸入的telnet協議,這兩種命令的接收到的回傳值一樣,
1、telnet
當使用telnet連接上redis服務器后,可以像redis-cli那樣對redis輸入命令,不過接收到的redis回傳是原生的回傳,而不是redis-cli上看到的回傳,
1)狀態回復
以加號+開頭,后面跟上狀態資訊,\r\n結尾,如+OK\r\n,
2)錯誤回復
以減號-開頭,后面跟上錯誤資訊,以\r\n結尾,
3)整數回復
以冒號:開頭,后面跟上數字,\r\n結尾,
4)字串回復
以美元$開頭,后面跟上字串的長度,然后是\r\n,字串內容,\r\n,
如$5\r\nHello\r\n,如果鍵沒有設定,在redis-cli回傳nil,在此則會回傳$-1,以和空字串區別,
5)多行字串回復
以*開頭,跟上字串的個數,加上\r\n,后面就是和字串回復一樣,
如*2\r\n$5\r\nHello\r\n$5\r\nWorld\r\n,
2、統一請求協議
統一請求協議的請求方式,和telnet里面收到的redis的多行字串回復一樣,先是字串的個數,接下來是每個字串的長度和具體內容,并且每個都用\r\n分隔開,
例如redis-cli里面輸入get key,則發送的是*3\r\n$3\r\nget\r\n$3\r\nkey\r\n,
統一請求協議收到的回傳值和telnet一致,
redis的AOF檔案和主從復制中的主資料庫向從資料庫發送內容,都采用統一請求協議,
三、管理工具
1、基本工具——redis-cli
1)耗時命令查詢
通過組態檔,可以配置執行redis的命令超過多長時間時,記錄執行的命令等資訊共開發人員分析,配置引數slowlog-log-slower-than 微秒,1秒是106微秒,引數默認值是104,即超過0.01秒的執行命令都會計入log,
用slowlog get獲取當前的耗時命令的日志,每個日志由4部分組成:日志唯一id、命令開始執行的unix時間、命令執行耗時(微秒)、完整命令及引數,
當設定為0則記錄所有命令,設定為負數則關閉,
2)命令監控
MONITOR,輸入此命令后,會收到redis回傳的OK,此后,任意客戶端對此redis服務器進行的操作,都會在此輸出,這樣非常耗性能(消耗將近一半的負載),因此只用于除錯和糾錯,
有基于monitor開發的開源腳本redis-faina.py,可以分析在服務器上最常用的命令、最頻繁使用的鍵等資訊,
2、phpRedisAdmin
該工具類似phpmyadmin,是用php開發的redis監控管理工具,其依賴于PRedis,因此需要先安裝PRedis,再安裝phpRedisAdmin,
默認連到127.0.0.1:6379,可以在專案include檔案夾的config.inc.php進行修改,
配置好nginx和php后,把phpredisadmin放到網站根目錄即可訪問,phpredisadmmin將redis的鍵以樹型展開,點擊某個鍵可以查看鍵的值、鍵的型別、鍵的過期時間、鍵的大小、鍵的編碼方式等,還可以編輯,
由于該工具采用keys*命令獲取鍵,再對每個鍵采用TYPE獲取型別,而redis又是單執行緒的,因此這樣效率不高,不適合在生產環境使用,
3、Rdbtools
這個工具是redis的檔案快照(rdb檔案)的決議器,根據快照的rdb檔案,將其匯出成json檔案,分析每個鍵占用空間情況,另外,可以匯出到csv,并且可以從csv匯入到excel,對結果進行分析,
轉載:https://cloud.tencent.com/developer/article/1053767
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/131448.html
標籤:PHP
