So sánh chi tiết giữa Redis Cache và Memcached Cache

memcached vs redis

1. Tổng quan nhanh

Tiêu chíRedisMemcached
LoạiIn‑memory datastore với nhiều cấu trúcIn‑memory key–value store đơn giản
Mô hình threadingĐơn luồng (single‑threaded)Đa luồng (multi‑threaded)
Kiểu dữ liệuStrings, Lists, Sets, Hashes, Sorted Set,…Chỉ key–value (binary-safe)
PersistenceCó (RDB/AOF), có thể bật/tắtKhông (chỉ RAM)
Replica/ClusterHỗ trợ replica, clustering, shardingChỉ sharding thủ công
Pub/Sub, LuaKhông

2. Tốc độ và hiệu năng

  • Memcached:
    • Multi‑threaded, tận dụng nhiều lõi CPU, throughput rất cao với thao tác GET/SET đơn giản.
    • Độ trễ trung bình: ~~0.1–0.5 ms trên workload chuẩn◆
  • Redis:
    • Single‑threaded nhưng tối ưu tốt, pipeline và I/O multiplexing giúp đạt >100 000 ops/sec trên phần cứng phổ thông◆.
    • Hỗ trợ pipelining giảm RTT, Lua scripting giúp gom nhiều lệnh thành 1 lần gọi.

Khi so sánh trực tiếp, nếu chỉ GET/SET đơn giản, Memcached có thể nhỉnh hơn vài % throughput; nhưng Redis lại vượt trội khi sử dụng pipelining, batch hay các kiểu dữ liệu phức tạp.


3. Ưu – Nhược điểm

Redis

Ưu điểm

  1. Đa dạng cấu trúc dữ liệu: list, set, hash, sorted set… phù hợp nhiều use-case (caching, leaderboard, queue…).
  2. Persistence: RDB snapshot và AOF giúp lưu trữ, phục hồi dữ liệu khi restart.
  3. Replication & High‑Availability: hỗ trợ replica, Redis Sentinel, clustering.
  4. Pub/Sub & Streams: build hệ thống messaging hoặc streaming.
  5. Lua scripting & Transactions: đảm bảo atomic operation, giảm round‑trip.

Nhược điểm

  1. Single‑threaded: tiến trình chỉ chạy trên 1 core, khó tận dụng đa nhân cho mỗi instance.
  2. Bộ nhớ overhead: cấu trúc dữ liệu phong phú tiêu tốn bộ nhớ hơn Memcached.
  3. Phức tạp hơn: cấu hình nhiều tính năng, cần giám sát kỹ.

Memcached

Ưu điểm

  1. Đơn giản & nhẹ: chỉ key–value, footprint nhỏ, dễ triển khai.
  2. Multi‑threaded: tận dụng nhiều CPU core cho throughput cao.
  3. Memory‑efficient: overhead thấp, phù hợp cache thuần.
  4. Maturity & ecosystem: nhiều client, plugin, module hỗ trợ.

Nhược điểm

  1. Không persistence: mất sạch cache khi restart.
  2. Chỉ key–value: không có kiểu dữ liệu phức tạp.
  3. Không built‑in replication: phải xử lý sharding và HA thủ công.

4. Quy trình triển khai cơ bản

Triển khai Memcached

Cài đặt

sudo apt-get update sudo 

apt-get install memcached

Cấu hình (/etc/memcached.conf)

-m: bộ nhớ (MB)

-p: port (mặc định 11211)

-u: user

-t: số thread

Khởi động & giám sát

systemctl enable memcached 

systemctl start memcached

Kiểm tra bằng memcached-tool hoặc stats command qua telnet.

Sharding: phân chia key qua client hoặc proxy (Twemproxy,…).

Triển khai Redis

Cài đặt

sudo apt-get update 

sudo apt-get install redis-server

Cấu hình (/etc/redis/redis.conf)

maxmemory & maxmemory-policy

Bật persistence: save (RDB), appendonly yes (AOF)

Cấu hình replication: replicaof host port

Cấu hình clustering (nếu cần)

Khởi động & giám sát

systemctl enable redis-server 

systemctl start redis-server

Dùng redis-cli info để kiểm tra trạng thái, stats, replication.

Scaling

Replica: thêm Redis Slave.

Sentinel: cấu hình HA, tự failover.

Cluster: shard key tự động, có master‑slave.


5. Khi nào nên chọn Redis hay Memcached

Trường hợp sử dụngChọn RedisChọn Memcached
Chỉ cache đơn giản (GET/SET object)
Cần cache với throughput cực cao, multi‑core
Cần cấu trúc dữ liệu (queue, list, sorted set)
Cần persistence / khôi phục cache sau reboot
Cần pub/sub, messaging
Cần high‑availability, auto‑failover✔ (Sentinel, Cluster)❌ (phải tự xây dựng)
Muốn giải pháp đơn giản, footprint nhẹ❌ (nhiều config hơn)

Kết luận

  • Nếu ứng dụng của bạn chỉ cần một cache key–value đơn giản, tối ưu throughput, dùng memory‑efficient, không cần persistence hay cấu trúc phức tạp → Memcached.
  • Nếu bạn cần rich-data types, persistence, replication, pub/sub, scripting hoặc muốn mở rộng thành hệ thống distributed cache/queue → Redis.