日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

導讀:redis是一個高性能的key-value數據庫,在實際開發中常被用于做分布式緩存、消息隊列等。Redis如此受歡迎這其中一個重要原因是因為其讀寫數據速度快,能支持10w+qps(每秒查詢率)。那么Redis快的原因是什么?文本從以下三點展開討論

  • 數據存到內存
  • 采用單線程模型
  • 使用多路I/O復用的I/O模型
Redis快的秘訣

 

1、數據存到內存

Redis數據存在內存中且絕大部分請求是對內存操作,因此在進行讀寫數據操作的時候不會受到硬盤 I/O 速度的限制,速度快。

補充:Redis也提供了兩種數據持久化方式:AOF(可回放的命令日志)與 RDB(內存快照)。兩種持久化方式各有優缺點,從Redis4.0開始允許使用RDB-AOF混合持久化的方式,這種方式結合了兩者的優點。這里本文不做具體討論。

2、采用單線程模型

2.1 文件事件處理器

Redis 服務器是一個事件驅動程序, 處理的事件分為時間事件和文件事件。Redis基于reactor設計模式開發了文件事件處理器用于高效地處理事件。

它的組成結構為4部分:多個套接字(socket)、IO多路復用程序、文件事件分派器、事件處理器(如下圖所示)。因為這個文件處理器是單線程的,所以Redis是單線程模型。

Redis快的秘訣

文件事件處理器

2.2單線程模型的優點

通過采用單線程避免了多線程中的上下文切換損耗及不需要考慮鎖問題以及鎖問題帶來的損耗等。

補充:Redis對數據事件的處理是單線程的,但它在其他模塊仍用了多個線程,如異步將數據寫入磁盤進行持久化操作。

3、使用多路I/O復用的I/O模型

3.1 概念介紹

I/O模型分為以下五種:

  • 同步阻塞I/O
  • 同步非阻塞I/O
  • IO多路復用(Reactor設計模式也稱為異步阻塞IO,例子:JAVA的Selector、linux的epoll)
  • 信號驅動I/O模型
  • 異步非阻塞I/O(Proactor設計模式)

在“Redis使用多路I/O復用模型”中“多路”指的是多個Socket連接,“復用”指的是復用同一個線程。采用多路 I/O 復用技術可以讓單個線程高效的處理多個連接請求。 (關于I/O模型的講解將會在以后的文章里做詳細討論,感興趣的朋友歡迎后續閱讀與討論)

Redis快的秘訣

 

3.2 I/O多路復用模型在Redis中的應用

Redis使用epoll同時監聽多個Socket連接,并給不同Socket關聯不同的處理程序。當被監聽的Sokcet準備好連接應答、請求、應答、關閉等操作時,就會產生對應的文件事件。這時文件事件處理器就會調用Socket之前關聯好的事件處理器來處理這些事件。

4.總結

Redis之所以快其中主要三個原因為:數據存到內存、采用單線程模型避免了些不必要的損耗、使用多路I/O復用的I/O模型讓單個線程高效的處理多個連接請求。快也還有包括其他的原因如數據模型等。

分享到:
標簽:Redis
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定