久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

redis是不是多線程的

148次閱讀
沒有評論

共計 1417 個字符,預計需要花費 4 分鐘才能閱讀完成。

自動寫代碼機器人,免費開通

丸趣 TV 小編給大家分享一下 redis 是不是多線程的,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!

redis 是單線程,單線程指的是網絡請求模塊使用了一個線程(所以不需考慮并發安全性),即一個線程處理所有網絡請求,其他模塊仍用了多個線程。

redis 可以能夠快速執行的原因:

(1) 絕大部分請求是純粹的內存操作(非常快速)
(2) 采用單線程, 避免了不必要的上下文切換和競爭條件
(3) 非阻塞 IO-IO 多路復用(IO 多路復用是什么意思?)

IO 多路復用中有三種方式:select,poll,epoll。需要注意的是,select,poll 是線程不安全的,epoll 是線程安全的

redis 內部實現采用 epoll,采用了 epoll+ 自己實現的簡單的事件框架。epoll 中的讀、寫、關閉、連接都轉化成了事件,然后利用 epoll 的多路復用特性,絕不在 io 上浪費一點時間 這 3 個條件不是相互獨立的,特別是第一條,如果請求都是耗時的,采用單線程吞吐量及性能可想而知了。應該說 redis 為特殊的場景選擇了合適的技術方案。

redis 的內部實現:

內部實現采用 epoll,采用了 epoll+ 自己實現的簡單的事件框架。epoll 中的讀、寫、關閉、連接都轉化成了事件,然后利用 epoll 的多路復用特性,絕不在 io 上浪費一點時間 這 3 個條件不是相互獨立的,特別是第一條,如果請求都是耗時的,采用單線程吞吐量及性能可想而知了。應該說 redis 為特殊的場景選擇了合適的技術方案。

Redis 關于線程安全問題:

redis 實際上是采用了線程封閉的觀念,把任務封閉在一個線程,自然避免了線程安全問題,不過對于需要依賴多個 redis 操作的復合操作來說,依然需要鎖,而且有可能是分布式鎖。

使用 Redis 有哪些好處?

(1) 速度快,因為數據存在內存中,類似于 HashMap,HashMap 的優勢就是查找和操作的時間復雜度都是 O(1)

(2) 支持豐富數據類型,支持 string,list,set,sorted set,hash

(3) 支持事務,操作都是原子性,所謂的原子性就是對數據的更改要么全部執行,要么全部不執行

(4) 豐富的特性:可用于緩存,消息,按 key 設置過期時間,過期后將會自動刪除

Redis 常見性能問題和解決方案:

(1) Master 最好不要做任何持久化工作,如 RDB 內存快照和 AOF 日志文件;(Master 寫內存快照,save 命令調度 rdbSave 函數,會阻塞主線程的工作,當快照比較大時對性能影響是非常大的,會間斷性暫停服務,所以 Master 最好不要寫內存快照;AOF 文件過大會影響 Master 重啟的恢復速度)

(2) 如果數據比較重要,某個 Slave 開啟 AOF 備份數據,策略設置為每秒同步一次

(3) 為了主從復制的速度和連接的穩定性,Master 和 Slave 最好在同一個局域網內

(4) 盡量避免在壓力很大的主庫上增加從庫

(5) 主從復制不要用圖狀結構,用單向鏈表結構更為穩定,即:Master – Slave1 – Slave2 – Slave3…;這樣的結構方便解決單點故障問題,實現 Slave 對 Master 的替換。如果 Master 掛了,可以立刻啟用 Slave1 做 Master,其他不變。

看完了這篇文章,相信你對 redis 是不是多線程的有了一定的了解,想了解更多相關知識,歡迎關注丸趣 TV 行業資訊頻道,感謝各位的閱讀!

向 AI 問一下細節

丸趣 TV 網 – 提供最優質的資源集合!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2024-02-03發表,共計1417字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 张家口市| 侯马市| 沙湾县| 正定县| 沂水县| 平远县| 禹城市| 南通市| 靖边县| 平原县| 黄浦区| 横峰县| 鲜城| 汝南县| 宣汉县| 沾化县| 白朗县| 舟山市| 梧州市| 莫力| 梨树县| 上饶市| 靖西县| 宜阳县| 嘉善县| 内乡县| 隆回县| 井冈山市| 宁陵县| 汾阳市| 手游| 迭部县| 英山县| 威海市| 伊通| 玉林市| 关岭| 柳江县| 铁岭市| 武宣县| 隆德县|