日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

面试题之Memcached与Redis的区别

發布時間:2025/3/21 数据库 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 面试题之Memcached与Redis的区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Redis Memcached
網絡IO模型 單線程的IO復用的網絡模型 多線程的非阻塞IO復用的網絡模型
數據支持類型 key-value數據類型
還支持list,set,zset,hash等數據結構的存儲
key-value形式存儲和訪問數據
查詢的時間復雜度降低到O(1)
內存管理機制 基于zmalloc.h和zmalloc.c兩個文件對mallc/free包裝來實現管理內存
使用現場申請內存的方式
基于Slab Allocation機制管理內存
使用預分配的內存池的方式
數據存儲及持久化 支持存儲
除以in-memory的形式存儲
另外兩種:快照(snapshotting),只追加文件(append-only file, AOF)
不支持存儲 以in-memory的形式存儲
數據一致性 提供了事務的功能,保證命令的原子性,中間不會被任何操作打斷
提供了cas命令,保證多個并發訪問操作同一份數據的一致性
集群管理 服務器端構建分布式存儲
只能采用客戶端實現分布式存儲
性能 單核
數據量<100k ? 高 數據量>100k ? 低
多核
數據量<100k ? 低
數據量>100k ? 高
內存使用效率
采用key-value 存儲結構 利用率低
采用hash結構來做key-value存儲(組合式的壓縮方式) ?利用率高
采用key-value 存儲結構 利用率高

Redis和Memcached這種基于內存的 數據庫 系統來說,內存管理的效率高低是影響系統性能的關鍵因素。
Redis和Memcached最大存儲量是根據機器 內存大小 而定。
Redis? 是一種鍵值數據庫,處于關系數據庫和鍵值數據庫之間。

Redis采用的是包裝的mallc/free方式來實現內存管理

Slab Allocation機制的原理:它首先申請一大塊內存,并將其分割成各種尺寸的塊Chunk,并把尺寸相同的塊分成組Slab Class。其中,Chunk就是用來存儲key-value數據的最小單位。每個Slab Class的大小,可以在Memcached啟動的時候通過制定Growth Factor來控制。假定圖中Growth Factor的取值為1.25,如果第一組Chunk的大小為88個字節,第二組Chunk的大小就為112個字節,依此類推。


Memcached使用預分配的內存池的方式,使用slab和大小不同的chunk來管理內存,Item根據大小選擇合適的chunk存儲,內存池的方式可以省去申請/釋放內存的開銷,并且能減小內存碎片產生,但這種方式也會帶來一定程度上的空間浪費,并且在內存仍然有很大空間時,新的數據也可能會被剔除。

Redis使用現場申請內存的方式來存儲數據,并且很少使用free-list等方式來優化內存分配,會在一定程度上存在內存碎片,Redis跟據存儲命令參數,會把帶過期時間的數據單獨存放在一起,并把它們稱為臨時數據,非臨時數據是永遠不會被剔除的,即便物理內存不夠,導致swap也不會剔除任何非臨時數據(但會嘗試剔除部分臨時數據),這點上Redis更適合作為存儲而不是cache。

redis提供的兩種不同的持久化方法來存儲數據到硬盤里面:
①快照(snapshotting),它可以將存在于某一時刻的所有數據都寫入硬盤里面。
②只追加文件(append-only file, AOF),它會在執行寫命令時,將被執行的寫命令復制到硬盤里面。


備注:malloc/free是C++/C語言的標準庫函數

總結

以上是生活随笔為你收集整理的面试题之Memcached与Redis的区别的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。