redis是線程安全的嗎

redis是單線程:

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

redis是線程安全的嗎

線程安全(推薦學習:Redis視頻教程

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有哪些好處?

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

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

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

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

更多Redis相關技術文章,請訪問Redis視頻教程欄目進行學習!

? 版權聲明
THE END
喜歡就支持一下吧
點贊8 分享