首頁  >  文章  >  資料庫  >  redis是線程安全的嗎

redis是線程安全的嗎

(*-*)浩
(*-*)浩原創
2019-06-18 10:46:327399瀏覽

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資料庫使用入門教學欄位學習!

以上是redis是線程安全的嗎的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn