中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

redis 和 memcached的區別是什么

發布時間:2021-08-13 17:28:53 來源:億速云 閱讀:166 作者:Leah 欄目:大數據

redis 和 memcached的區別是什么,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

redis 和 memcached 有啥區別?

redis 支持復雜的數據結構

redis 相比 memcached 來說,擁有更多的數據結構,能支持更豐富的數據操作。如果需要緩存能夠支持更復雜的結構和操作, redis 會是不錯的選擇。

redis 原生支持集群模式

在 redis3.x 版本中,便能支持 cluster 模式,而 memcached 沒有原生的集群模式,需要依靠客戶端來實現往集群中分片寫入數據。

性能對比

由于 redis 只使用單核,而 memcached 可以使用多核,所以平均每一個核上 redis 在存儲小數據時比 memcached 性能更高。而在 100k 以上的數據中,memcached 性能要高于 redis,雖然 redis 最近也在存儲大數據的性能上進行優化,但是比起 memcached,還是稍有遜色。

redis 的線程模型

redis 內部使用文件事件處理器 file event handler,這個文件事件處理器是單線程的,所以 redis 才叫做單線程的模型。它采用 IO 多路復用機制同時監聽多個 socket,根據 socket 上的事件來選擇對應的事件處理器進行處理。

文件事件處理器的結構包含 4 個部分:

  • 多個 socket

  • IO 多路復用程序

  • 文件事件分派器

  • 事件處理器(連接應答處理器、命令請求處理器、命令回復處理器)

多個 socket 可能會并發產生不同的操作,每個操作對應不同的文件事件,但是 IO 多路復用程序會監聽多個 socket,會將 socket 產生的事件放入隊列中排隊,事件分派器每次從隊列中取出一個事件,把該事件交給對應的事件處理器進行處理。

來看客戶端與 redis 的一次通信過程:

redis 和 memcached的區別是什么

客戶端 socket01 向 redis 的 server socket 請求建立連接,此時 server socket 會產生一個 AE_READABLE 事件,IO 多路復用程序監聽到 server socket 產生的事件后,將該事件壓入隊列中。文件事件分派器從隊列中獲取該事件,交給連接應答處理器。連接應答處理器會創建一個能與客戶端通信的 socket01,并將該 socket01 的 AE_READABLE 事件與命令請求處理器關聯。

假設此時客戶端發送了一個 set key value 請求,此時 redis 中的 socket01 會產生 AE_READABLE 事件,IO 多路復用程序將事件壓入隊列,此時事件分派器從隊列中獲取到該事件,由于前面 socket01 的 AE_READABLE 事件已經與命令請求處理器關聯,因此事件分派器將事件交給命令請求處理器來處理。命令請求處理器讀取 socket01 的 key value 并在自己內存中完成 key value 的設置。操作完成后,它會將 socket01 的 AE_WRITABLE 事件與命令回復處理器關聯。

如果此時客戶端準備好接收返回結果了,那么 redis 中的 socket01 會產生一個 AE_WRITABLE 事件,同樣壓入隊列中,事件分派器找到相關聯的命令回復處理器,由命令回復處理器對 socket01 輸入本次操作的一個結果,比如 ok,之后解除 socket01 的 AE_WRITABLE 事件與命令回復處理器的關聯。

這樣便完成了一次通信。

為啥 redis 單線程模型也能效率這么高?

  • 純內存操作

  • 核心是基于非阻塞的 IO 多路復用機制

  • 單線程反而避免了多線程的頻繁上下文切換問題

看完上述內容,你們掌握redis 和 memcached的區別是什么的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

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

AI

长子县| 盐边县| 洮南市| 容城县| 镇平县| 尚义县| 刚察县| 闽侯县| 昌吉市| 凌海市| 中牟县| 鹤岗市| 云和县| 儋州市| 绥江县| 平陆县| 兰考县| 将乐县| 登封市| 博白县| 德安县| 获嘉县| 泰安市| 越西县| 台前县| 长寿区| 松滋市| 威海市| 饶阳县| 双流县| 赣榆县| 华坪县| 来宾市| 九龙城区| 咸宁市| 鄢陵县| 长岭县| 昆明市| 海盐县| 天全县| 博客|