Redis知識思維導圖總結
Redis基礎知識總結思維導圖,系統的學(xué)習Redis。不定時(shí)更新。
主要包括:
- 基本數據和應用場(chǎng)景
- 常見(jiàn)問(wèn)題分析
- 性能優(yōu)化
- 持久化
- 集群模式
- 子模塊
基本知識
基本數據類(lèi)型和使用場(chǎng)景
基本數據類(lèi)型
-
string
- 二進(jìn)制安全,可以包含任何數據,一個(gè)鍵最大能存儲512M
-
hash
- 鍵值對集合,存儲、讀取、修改用戶(hù)屬性
-
list
- 鏈表(雙向鏈表),可用于最新消息排行等功能(比如朋友圈的時(shí)間線(xiàn))和消息隊列
-
set
- 哈希表實(shí)現,元素不重復??捎糜诶梦ㄒ恍?統計訪(fǎng)問(wèn)網(wǎng)站的所有獨立ip和好友推薦時(shí),根據tag求交集,大于某個(gè)閾值就可以推薦
-
Sorted sets
- 將Set中的元素增加一個(gè)權重參數score,元素按score有序排列。
- 可用于排行榜,帶權重的消息隊列
-
bitmaps
- 通過(guò)類(lèi)似 map 結構存放 0 或 1 ( bit 位 ) 作為值。
- 可用于用戶(hù)簽到,百萬(wàn)用戶(hù)在線(xiàn)狀態(tài)統計,千萬(wàn)消費者數據去重。
-
HyperLogLogs
- 可以接受多個(gè)元素作為輸入,并給出輸入元素的基數估算值
使用場(chǎng)景
- 緩存數據;
- 最新消息排行等功能(比如朋友圈的時(shí)間線(xiàn));
- 消息隊列、帶權重的消息隊列
- 共同好友
- 好友推薦時(shí),根據tag求交集,大于某個(gè)閾值就可以推薦
- 排行榜
- 用戶(hù)簽到
- 百萬(wàn)用戶(hù)在線(xiàn)狀態(tài)統計
- 千萬(wàn)消費者數據去重
- 分布式鎖
常見(jiàn)問(wèn)題分析
客戶(hù)端報錯
- Could not get a resource from the pool
- 連接泄露,使用了的連接并未歸還到連接池
- 并發(fā)量過(guò)大,連接池最大連接配置過(guò)小
- 存在執行較慢的命令
- Unexpected end of stream
- 多線(xiàn)程訪(fǎng)問(wèn)了Jedis對象,或者pipeline對象
- 客戶(hù)端緩沖區滿(mǎn)了
- 普通客戶(hù)端緩沖區(normal):普通客戶(hù)端緩沖區(normal):用于接受普通的命令,例如get、set、mset、hgetall、zrange等
- slave客戶(hù)端緩沖區(slave):用于同步master節點(diǎn)的寫(xiě)命令,完成復制。
- 發(fā)布訂閱緩沖區(pubsub):pubsub不是普通的命令,因此有單獨的緩沖區。
- ERR illegal address
- ip 端口配置的不對
- ERR max number of clients reached
- 超過(guò)了Redis實(shí)例配置的最大maxclients
- 服務(wù)端maxclient配置過(guò)小
- 客戶(hù)端連接池過(guò)多,過(guò)大
- 客戶(hù)端存在連接泄露,服務(wù)端沒(méi)有定時(shí)關(guān)閉連接
- 超過(guò)了Redis實(shí)例配置的最大maxclients
- java.net.SocketTimeoutException: Read timed out
- 讀寫(xiě)超時(shí)設置的過(guò)短。
- 有慢查詢(xún)或者Redis發(fā)生阻塞。
- 網(wǎng)絡(luò )不穩定。
- NOAUTH Authentication required
- 客戶(hù)端沒(méi)有傳密碼
- OOM command not allowed when used memory > 'maxmemory'
- Redis實(shí)例內存已經(jīng)寫(xiě)滿(mǎn),調大maxmemory,不建議大于10G
- LOADING Redis is loading the dataset in memory
- 如果Redis正在加載持久化文件,無(wú)法進(jìn)行正常的讀寫(xiě)。
- java.net.SocketTimeoutException: connect timed out
- 連接超時(shí)設置的過(guò)短。
- tcp-backlog滿(mǎn),造成新的連接失敗。
- 客戶(hù)端與服務(wù)端網(wǎng)絡(luò )不正常。
- Please close pipeline or multi block before calling this method.
- 使用pipeline.syncAndReturnAll()來(lái)實(shí)現
服務(wù)端報錯
- psync scheduled to be closed ASAP for overcoming of output buffer limits
- client-output-buffer-limit slave 設置為client-output-buffer-limit slave 0 0 0
性能優(yōu)化
思維導圖:
持久化
思維導圖
集群模式
思維導圖
子模塊
思維導圖
內核源碼詳解
內核部分包括:
- 內核啟動(dòng)過(guò)程
內核啟動(dòng)過(guò)程
TODO:將思維導圖里面的東西總結的更詳細。
哈哈哈,還好
屬實(shí)強
很贊!
這個(gè)圖做出來(lái),用了不少腦子吧。