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資料庫使用入門教學欄位學習!
以上是redis是線程安全的嗎的詳細內容。更多資訊請關注PHP中文網其他相關文章!