Redis hoạt động thế nào?
In‑memory: dữ liệu nằm trong RAM nên rất nhanh.
Single‑threaded event loop tối ưu, lệnh là atomic trên một key.
Có persistence để ghi xuống đĩa (RDB snapshot, AOF append‑only) nhằm khôi phục khi restart.
Hỗ trợ replication, Sentinel (HA), Cluster (sharding) cho hệ thống lớn.
Tham khảo: Redis Docs • Open Source Redis
Kiểu dữ liệu phổ biến và lệnh nhanh
String:
SET
,GET
,INCR
,DECR
,MGET
.Hash: cấu trúc key‑value nhỏ trong một key.
HSET
,HGET
,HGETALL
.List: hàng đợi FIFO/LIFO.
LPUSH
,RPUSH
,LPOP
,BRPOP
.Set: tập hợp không trùng.
SADD
,SISMEMBER
,SMEMBERS
.Sorted Set: có điểm số để xếp hạng.
ZADD
,ZRANGE
,ZREVRANGE
,ZINCRBY
.Bitmap, HyperLogLog, Geo: đếm xấp xỉ, truy vấn địa lý.
Stream: log/event stream có consumer group.
Xem thêm: Develop with Redis
TTL và Eviction Policy
TTL: dùng
EXPIRE key seconds
,SET key value EX seconds
để tự hết hạn.Eviction policy: khi gần hết RAM, Redis cần “đẩy” key ra ngoài tùy chính sách:
noeviction
: trả lỗi khi đầy.volatile-lru
,allkeys-lru
: loại theo Least Recently Used.volatile-ttl
: ưu tiên key sắp hết hạn.allkeys-random
, …
Chọn policy phù hợp workload cache. Với cache thuần,
allkeys-lru
là mặc định hợp lý.
Tài liệu: Redis Docs
Persistence: RDB vs AOF
RDB (snapshot): ghi ảnh chụp định kỳ. Nhanh, file gọn, rủi ro mất dữ liệu giữa 2 lần snapshot.
AOF (append only): ghi từng lệnh. An toàn hơn, file to hơn, cần rewrite định kỳ.
Thực tế thường bật cả hai: RDB để restore nhanh, AOF để hạn chế mất dữ liệu.
Tài liệu: Redis Open Source – Persistence
Replication, Sentinel, Cluster
Replication: master‑replica để đọc phân tán, failover thủ công hoặc nhờ Sentinel.
Sentinel: giám sát master, tự động failover khi master down.
Cluster: sharding theo hash slot 16384, scale ngang nhiều node, tự cân bằng một phần.
Tài liệu: Redis Docs
Pub/Sub và Stream
Pub/Sub: publish message theo channel, subscriber nhận realtime. Đơn giản, không lưu bền.
Stream: log bền, có consumer groups, re‑deliver, phù hợp pipeline sự kiện, audit.
Tham khảo: Redis Docs
Những use case “đáng tiền”
Cache dữ liệu DB, HTTP response.
Session, CSRF token, OTP, rate limit.
Ranking, leaderboard, trending.
Queue công việc nhẹ với List hoặc Stream.
Realtime feed, pub/sub thông báo.
Search đơn giản với Set/Sorted Set hoặc Redis Search (module trong Redis Stack).
Tài liệu: Redis Quick Start
Bảo mật và vận hành an toàn
Network: chỉ mở cổng 6379 trong private network hoặc VPN. Dùng TLS nếu hỗ trợ.
Auth: bật
requirepass
hoặc ACL, giới hạn lệnh nguy hiểm.Persistence: sao lưu định kỳ file RDB/AOF, kiểm tra restore.
Monitoring: theo dõi memory, hits/misses, latency, keyspace, replication delay.
Eviction: chọn policy đúng, đặt maxmemory hợp lý, gắn TTL rõ ràng cho cache.
Tài liệu: Redis Deployment Planning
Cài đặt nhanh
Local: cài Redis OSS theo hệ điều hành hoặc chạy Docker.
Cloud: tạo Redis Cloud managed DB trên AWS, GCP, Azure.
Client: dùng thư viện theo ngôn ngữ như Python, Node.js, Go, .NET.
Bắt đầu: Redis Open Source – Install • Redis Cloud quick start
Lệnh cơ bản “vào việc ngay”
# Kết nối
redis-cli -h 127.0.0.1 -p 6379
# String
SET user:1:name "NHT" EX 3600
GET user:1:name
# Hash
HSET user:1 name "NHT" role "writer"
HGETALL user:1
# List làm queue
LPUSH jobs "build:123"
BRPOP jobs 5
# Sorted Set làm leaderboard
ZADD leaderboard 1000 alice 950 bob 920 charlie
ZREVRANGE leaderboard 0 2 WITHSCORES
Thêm ví dụ theo ngôn ngữ: Redis client API libraries
Best practices
Cache key có namespace, ví dụ
user:{id}:profile
.Đặt TTL cho nội dung cache, tránh “cache zombie”.
Chọn cấu trúc dữ liệu phù hợp: Hash cho profile, Sorted Set cho top N…
Tránh
KEYS *
trên prod. Dùng SCAN để duyệt dần.Tách Redis cache và Redis queue nếu workload rất khác nhau.
Với cluster: cân nhắc client hỗ trợ hash tags
{}
để giữ dữ liệu liên quan cùng slot.
So sánh nhanh: Redis vs Memcached
Cấu trúc dữ liệu: Redis đa dạng hơn, Memcached là key‑value đơn giản.
Persistence: Redis có RDB/AOF, Memcached không.
Tính năng: Redis có pub/sub, stream, script Lua, transaction…
Hiệu năng: Memcached rất nhanh cho cache thuần; Redis nhanh và linh hoạt cho nhiều case.
Chọn cái nào? Cache đơn giản, cực nhẹ → Memcached. Cần tính năng, bền bỉ, mở rộng → Redis.
Tích hợp dịch vụ quản lý (managed)
AWS: dùng ElastiCache for Redis cho HA, patching, backup, scaling. Xem: AWS – Elastic Load Balancing để hiểu thêm về hạ tầng cân bằng tải đi kèm kiến trúc.
Redis Cloud: triển khai trên AWS, GCP, Azure, có module Search, JSON, TimeSeries. Tham khảo: Redis Cloud quick start.
FAQ
Redis có thay thế hoàn toàn DB quan hệ không?
Không. Redis phù hợp cache và realtime, nhưng dữ liệu cốt lõi vẫn nên ở DB bền vững.
Có nên bật cả RDB và AOF?
Thường có. RDB giúp restore nhanh, AOF giảm mất dữ liệu.
Chọn eviction nào cho cache?
allkeys-lru
hoặc allkeys-lfu
thường hợp lý, tùy pattern truy cập.
Khi nào dùng Cluster thay vì Sentinel?
Khi cần scale ngang dữ liệu và throughput. Sentinel chủ yếu cho HA master‑replica.
Tài liệu tham khảo
Tài liệu chính thức: Redis Docs • Develop with Redis • Redis Quick Start • Open Source Redis
Redis Cloud: Redis Cloud quick start
Hạ tầng liên quan: AWS – Elastic Load Balancing