## 對比
| # | redis | memcache |
| --- | --- | --- |
| 數據結構 | 字符串,列表,集合,哈希,有序集合等 | 字符串 |
| 主從復制 | 自帶 Redis Sentinel | 不支持,通過第三方 repcached 實現 |
| 分布式 | 自帶 Redis Cluster | 不支持,需要客戶端實現 |
| 持久化 | 支持 AOF 和 RDB 兩種,4.0版本支持兩種混合 | 不支持,通過第三方 memcachedb 實現 |
| 數據一致性 | 提供事務 | cas 命令 |
| 分布式 | 自帶 Redis Cluster | 不支持,需要客戶端實現 |
| 安全驗證 | 支持密碼 | 沒有安全驗證,通過限制 ip 訪問保證公網安全 |
| 網絡IO模型 | 單線程阻塞IO復用模型 | 多線程,非阻塞IO復用 |
| 內存管理機制 | 現用現申請,會造成內存碎片。物理內存不夠時會將不常訪問的數據持久化到硬盤中,不會自動剔除數據 | 預分配,極少產生內存碎片,避免申請/釋放內存的開銷,數據會被剔除 |
> 在絕對 K/V 形式存儲字符串的情況下,不考慮數據持久化,對排序,聚合情況下,Memcache 更適合處理。
> 對讀寫效率都有要求,業務邏輯較復雜的情況下,Redis 有絕對的優勢。通過內存管理機制和持久化上來看,Redis 有明顯的存儲特征,而不只是緩存