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

Redis篇:?jiǎn)尉€程 Reactor 模型

存儲(chǔ) Redis
純內(nèi)存訪問(wèn),所有數(shù)據(jù)都在內(nèi)存中,所有的運(yùn)算都是內(nèi)存級(jí)別的運(yùn)算,內(nèi)存響應(yīng)時(shí)間的時(shí)間為納秒級(jí)別。因此 redis 進(jìn)程的 cpu 基本不存在磁盤 I/O 等待時(shí)間、內(nèi)存讀寫性能問(wèn)題,CPU 不是 redis 的瓶頸(內(nèi)存大小和網(wǎng)絡(luò)I/O 才是 redis 的瓶頸,也就是客戶端和服務(wù)端之間的網(wǎng)絡(luò)傳輸延遲)。

redis 的高性能

  • 純內(nèi)存訪問(wèn),所有數(shù)據(jù)都在內(nèi)存中,所有的運(yùn)算都是內(nèi)存級(jí)別的運(yùn)算,內(nèi)存響應(yīng)時(shí)間的時(shí)間為納秒級(jí)別。因此 redis 進(jìn)程的 cpu 基本不存在磁盤 I/O 等待時(shí)間、內(nèi)存讀寫性能問(wèn)題,CPU 不是 redis 的瓶頸(內(nèi)存大小和網(wǎng)絡(luò)I/O 才是 redis 的瓶頸,也就是客戶端和服務(wù)端之間的網(wǎng)絡(luò)傳輸延遲)
  • 采用單線程模型,單線程實(shí)現(xiàn)簡(jiǎn)單。避免了多線程頻繁上下文切換,以及同步機(jī)制加鎖帶來(lái)的開(kāi)銷
  • 簡(jiǎn)單高效的基礎(chǔ)數(shù)據(jù)結(jié)構(gòu):動(dòng)態(tài)字符串(SDS),鏈表,字典,跳躍鏈表,整數(shù)集合和壓縮列表。然后 redis 在這個(gè)基礎(chǔ)上去實(shí)現(xiàn)用戶能操作的對(duì)象:字符串,列表,哈希,集合,有序集合等對(duì)象
  • reactor 模式的網(wǎng)絡(luò)事件處理器。它使用了 I/O 多路復(fù)用去同時(shí)監(jiān)控多個(gè)套接字,這是一種高效的I/O模型。reactor 相關(guān)知識(shí)可以看下這篇文章 框架篇:見(jiàn)識(shí)一下linux高性能網(wǎng)絡(luò)IO+Reactor模型

為什么使用單線程

采用單線程,避免了不必要的上下文切換和競(jìng)爭(zhēng)條件;不存在多線程導(dǎo)致的切換而消耗CPU

不用考慮各種鎖的問(wèn)題,不存在加鎖和釋放鎖的的操作,沒(méi)有因?yàn)榭赡艹霈F(xiàn)的死鎖而導(dǎo)致的性能消耗

簡(jiǎn)單可維護(hù),多線程模式會(huì)使得程序的編寫更加復(fù)雜和麻煩,單線程實(shí)現(xiàn)易實(shí)現(xiàn)

redis 是單線程系統(tǒng)?

我們常說(shuō) redis 單線程是指其網(wǎng)絡(luò)事件處理模型 reactor 是單線程

如果一次 client 請(qǐng)求會(huì)刪除幾百萬(wàn) keys 值,那么這條命令可能會(huì)導(dǎo)致阻塞。在 redis 4.0 選擇引入多線程來(lái)實(shí)現(xiàn)這一類非阻塞的命令

在 redis6.0 版本正式引入多線程去處理客戶端的 I/O 讀寫響應(yīng),而 redis 命令事件的處理還是在主線程單線處理

假如是針對(duì)整個(gè) redis 系統(tǒng),則一直有其他線程去處理異步任務(wù),如 AOF、RDB 的同步

redis I/O模型

redis 處理快,不單單因?yàn)樗莻€(gè)單線程純內(nèi)存系統(tǒng),還有它采用了 Reactor 模型,使用 I/O 多路復(fù)用來(lái)實(shí)現(xiàn)對(duì)外部請(qǐng)求的處理,減少網(wǎng)絡(luò)連接、讀寫等待時(shí)間。使其在網(wǎng)絡(luò) I/O 操作中能并發(fā)處理大量的客戶端請(qǐng)求,實(shí)現(xiàn)高吞吐率,高并發(fā)

redis 的多線程版本I/O模型 6.0

參考文章

 

  • Redis深入系列-線程IO模型1
  • Redis 多線程網(wǎng)絡(luò)模型全面揭秘

 

責(zé)任編輯:武曉燕 來(lái)源: 潛行前行
相關(guān)推薦

2010-01-28 16:45:44

Android單線程模

2025-04-24 08:15:00

Redis單線程線程

2009-07-10 09:05:20

SwingWorker

2019-11-25 10:13:52

Redis單線程I

2024-09-27 11:51:33

Redis多線程單線程

2019-06-17 14:20:51

Redis數(shù)據(jù)庫(kù)Java

2020-06-11 09:35:39

Redis單線程Java

2020-10-30 16:20:38

Redis單線程高并發(fā)

2023-10-15 12:23:10

單線程Redis

2023-08-17 14:12:17

2020-11-09 09:33:37

多線程

2022-09-29 15:39:10

服務(wù)器NettyReactor

2024-10-24 20:48:04

Netty線程Java

2023-03-21 08:02:36

Redis6.0IO多線程

2010-08-30 08:55:56

JavaScript引

2023-12-01 08:18:24

Redis網(wǎng)絡(luò)

2019-05-07 09:44:45

Redis高并發(fā)模型

2019-05-06 11:12:18

Redis高并發(fā)單線程

2020-09-23 13:37:25

Redis6.0

2020-11-17 10:20:53

Redis多線程單線程
點(diǎn)贊
收藏

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