自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Redis為什么快呢?能說一下I/O多路復用嗎?

數(shù)據(jù)庫 Redis
整個過程只在進行select、poll、epoll這些調(diào)用的時候才會阻塞,收發(fā)客戶消息是不會阻塞的,整個進程或者線程就被充分利用起來,這就是事件驅(qū)動,所謂的reactor模式。

Redis為什么快呢?

Redis的速度?常的快,單機的Redis就可以?撐每秒十幾萬的并發(fā),相對于MySQL來說,性能是MySQL的??倍。速度快的原因主要有?點:

  1. 完全基于內(nèi)存操作
  2. 使?單線程,避免了線程切換和競態(tài)產(chǎn)生的消耗
  3. 基于?阻塞的IO多路復?機制
  4. C語?實現(xiàn),優(yōu)化過的數(shù)據(jù)結(jié)構(gòu),基于?種基礎(chǔ)的數(shù)據(jù)結(jié)構(gòu),redis做了?量的優(yōu)化,性能極?

能說一下I/O多路復用嗎?

第一種選擇:按順序逐個檢查,先檢查A,然后是B,之后是C、D。。。這中間如果有一個學生卡住,全班都會被耽誤。這種模式就好比,你用循環(huán)挨個處理socket,根本不具有并發(fā)能力。

第二種選擇:你創(chuàng)建30個分身,每個分身檢查一個學生的答案是否正確。 這種類似于為每一個用戶創(chuàng)建一個進程或者- 線程處理連接。

第三種選擇,你站在講臺上等,誰解答完誰舉手。這時C、D舉手,表示他們解答問題完畢,你下去依次檢查C、D的答案,然后繼續(xù)回到講臺上等。此時E、A又舉手,然后去處理E和A。

第一種就是阻塞IO模型,第三種就是I/O復用模型。

Linux系統(tǒng)有三種方式實現(xiàn)IO多路復用:select、poll和epoll。

例如epoll方式是將用戶socket對應的fd注冊進epoll,然后epoll幫你監(jiān)聽哪些socket上有消息到達,這樣就避免了大量的無用操作。此時的socket應該采用非阻塞模式。

這樣,整個過程只在進行select、poll、epoll這些調(diào)用的時候才會阻塞,收發(fā)客戶消息是不會阻塞的,整個進程或者線程就被充分利用起來,這就是事件驅(qū)動,所謂的reactor模式。


責任編輯:武曉燕 來源: 51CTO博客
相關(guān)推薦

2023-05-08 00:06:45

Go語言機制

2021-03-17 16:53:51

IO多路

2021-02-10 08:09:48

Netty網(wǎng)絡多路復用

2020-10-13 07:51:03

五種IO模型

2021-03-24 08:03:38

NettyJava NIO網(wǎng)絡技術(shù)

2024-12-30 00:00:05

2019-12-23 14:53:26

IO復用

2021-06-09 19:25:13

IODubbo

2024-03-25 02:00:00

Vite開發(fā)

2023-08-07 08:52:03

Java多路復用機制

2024-08-08 14:57:32

2023-01-09 10:04:47

IO多路復用模型

2022-01-06 14:45:10

數(shù)據(jù)庫連接池IO

2022-09-12 06:33:15

Select多路復用

2011-12-08 10:51:25

JavaNIO

2021-05-31 06:50:47

SelectPoll系統(tǒng)

2020-10-14 09:11:44

IO 多路復用實現(xiàn)機

2009-06-29 18:09:12

多路復用Oracle

2023-03-01 14:32:31

redisIOEpoll

2023-12-06 07:16:31

Go語言語句
點贊
收藏

51CTO技術(shù)棧公眾號