redis和memcached的區別

2022-08-27 08:00:15 字數 1440 閱讀 3539

相比於memcached,redis擁有更多是資料結構,所以支援更多的資料操作,redis允許的value資料結構型別有5種:string(字串)、list(列表)、set(集合)、hash(雜湊)、zset(有序集合)。

redis只支援單核,memcached可以使用多核,所以平均每乙個核上 redis 在儲存小資料時比 memcached 效能更高。但是在大資料儲存上的處理比起memcached,redis還是稍微遜色了點。

redis內部使用的是檔案事件處理器file event handler,這個file event handler是單執行緒的,所以我們說redis是單執行緒模型。

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

多個 socket 可能會併發產生不同的操作,每個操作對應不同的檔案事件,但是 io 多路復用程式會監聽多個 socket,會將產生事件的 socket 放入佇列中排隊,事件分派器每次從佇列中取出乙個 socket,根據 socket 的事件型別交給對應的事件處理器進行處理。

首先,redis 服務端程序初始化的時候,會將 server socket 的ae_readable事件與連線應答處理器關聯。

客戶端 socket01 向 redis 程序的 server socket 請求建立連線,此時 server socket 會產生乙個ae_readable事件,io 多路復用程式監聽到 server socket 產生的事件後,將該 socket 壓入佇列中。檔案事件分派器從佇列中獲取 socket,交給連線應答處理器。連線應答處理器會建立乙個能與客戶端通訊的 socket01,並將該 socket01 的ae_readable事件與命令請求處理器關聯。

假設此時客戶端傳送了乙個set key value請求,此時 redis 中的 socket01 會產生ae_readable事件,io 多路復用程式將 socket01 壓入佇列,此時事件分派器從佇列中獲取到 socket01 產生的ae_readable事件,由於前面 socket01 的ae_readable事件已經與命令請求處理器關聯,因此事件分派器將事件交給命令請求處理器來處理。命令請求處理器讀取 socket01 的key value並在自己記憶體中完成key value的設定。操作完成後,它會將 socket01 的ae_writable事件與命令回覆處理器關聯。

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

memcached和redis的區別

redis的作者salvatore sanfilippo曾經對這兩種基於記憶體的資料儲存系統進行過比較,總體來看還是比較客觀的,現總結如下 1 效能對比 由於redis只使用單核,而memcached可以使用多核,所以平均每乙個核上redis在儲存小資料時比memcached效能更 高。而在100k...

redis和memcached的區別 ?

redis 和 memcache 都是基於記憶體的資料儲存系統。memcached是高效能分布式記憶體快取服務 redis是乙個開源的key value儲存系統。下面我們來進行來看一下redis和memcached的區別。redis的作者salvatore sanfilippo曾經對這兩種基於記憶體...

memcached和redis在用法上的不同

寫入資料 set方法不同 memcached可以直接寫入單個值或一維陣列 二維陣列資料,redis可以寫單個資料,一維陣列和二維陣列資料需要序列化後再寫入.讀取資料 get方法不同 memcached讀取單個值 一維陣列 二維陣列資料 通過get方法即可讀取 get get array redis讀...