91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

redis為什么用單線程

發布時間:2021-11-01 10:50:15 來源:億速云 閱讀:202 作者:iii 欄目:關系型數據庫

本篇內容主要講解“redis為什么用單線程”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“redis為什么用單線程”吧!

1.基本概念

  • 什么是redis的單線程(核心功能在單線程上,并不是所有功能)

    • 持久化

    • 異步刪除

    • 集群數據同步

    • redis的網絡IO和鍵值對讀寫是由一個線程完成的(redis的核心服務)

    • redis的其他功能由額外線程完成

【相關推薦:Redis視頻教程】

2.redis為什么用單線程

  • 多線程的開銷

    • 被多線程同時訪問共享資源,比如共享的數據結構

    • 為了保證線程安全,導致性能的犧牲

    • 粗粒度的鎖導致所有串行,系統的吞吐率隨著線程的增加而增加

    • 使用多線程可以增加系統吞吐率(每個請求),增加系統擴展性

    • 無限的增加線程數,導致吞吐量下降

  • 因此為了節省并發資源的管理,redis使用單線程,保證所有操作串行化

redis為什么用單線程

redis為什么用單線程

3.單線程的redis為什么快

  • redis大部分操作都在內存上+高效的數據結構

  • redis采用多路復用機制,在網絡中處理大量客戶端請求,實現高吞吐率

4.socket

  • socket通信過程(網絡IO處理+鍵值對讀寫+網絡IO處理)

    • SimpleKV 為了處理一個 Get 請求

    • 需要監聽客戶端請求(bind/listen)

    • 和客戶端(代碼)建立連接(accept)

    • 從 socket 中讀取請求(recv)

    • 解析客戶端發送請求(parse)

    • 根據請求類型讀取鍵值數據(get)

    • 最后給客戶端返回結果,即向 socket 中寫回數據(send)

  • 潛在的阻塞點

    • accept() 未能成功建立連接時,會一直阻塞\

    • recv() 從客戶端讀取數據時,會一直阻塞\

redis為什么用單線程

  • socket的非阻塞模式

  • 保證 Redis 線程,既不會像基本 IO 模型中一直在阻塞點等待,也不會導致 Redis 無法處理實際到達的連接請求或數據

  • Linux 中的 IO 多路復用機制

redis為什么用單線程

5.多路復用

  • Linux中的IO多路復用機制指一個線程處理多個IO流,select/poll

  • 在單線程下,同時存在監聽多個套接字和已連接套接字

  • 具體實現

    • 首先將事件放入事件隊列,無需潤徐請求是否實際發生,避免CPU資源浪費

    • 根據相應的事件執行響應的操作

    • FD是多個套接字

    • Redis使用epoll機制,讓內核監聽套接字

    • Redis可以和多個客戶端連接并處理請求,從而提升并發性

    • select/epoll提供了基于事件的回調機制,針對不同的事件調用對應的處理函數

redis為什么用單線程

到此,相信大家對“redis為什么用單線程”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

博乐市| 姜堰市| 砀山县| 广汉市| 乌鲁木齐市| 安顺市| 汶川县| 姜堰市| 乐亭县| 新邵县| 石柱| 焦作市| 本溪| 浠水县| 富民县| 肥东县| 丹巴县| 嘉荫县| 南昌市| 华容县| 石渠县| 定边县| 内黄县| 沂南县| 扬州市| 定陶县| 营口市| 兴城市| 乌兰察布市| 永安市| 安陆市| 庄河市| 余庆县| 汕尾市| 马鞍山市| 清河县| 邵东县| 随州市| 呼伦贝尔市| 修水县| 仪陇县|