Tổng hợp 32 câu hỏi phỏng vấn Redis kèm đáp án chi tiết, song ngữ Việt–Anh — sắp xếp từ cơ bản đến nâng cao. Ôn luyện miễn phí, tự động lưu tiến độ.
Redis (Remote Dictionary Server) là in-memory data structure store, thường được dùng làm cache, message broker, và session store. Redis nhanh vì toàn bộ data được lưu trong RAM — tốc độ đọc/ghi RAM nhanh hơn disk hàng nghìn lần. Ngoài ra, Redis dùng I/O…
Redis có 5 kiểu dữ liệu cơ bản (String, Hash, List, Set, Sorted Set), mỗi loại tối ưu cho một use case khác nhau. Các kiểu dữ liệu Redis và khi nào dùng: - String: kiểu cơ bản nhất, dùng cho cache HTML/JSON, counter (INCR…
RDB (Redis Database Snapshot) chụp toàn bộ data ra file .rdb theo định kỳ — ví dụ save 900 1 nghĩa là snapshot nếu có ít nhất 1 key đổi trong 900 giây. File gọn, restart nhanh vì chỉ nạp một file, đổi lại có…
Redis Pub/Sub cho phép publisher gửi message vào một channel, và mọi subscriber đang lắng nghe channel đó nhận được ngay: Bản chất là fire-and-forget: message không được lưu lại. Không có subscriber nào online lúc publish là message mất luôn, và subscriber mới vào…
Redis Transaction dùng MULTI/EXEC: các command giữa MULTI và EXEC được queue lại và execute atomically — không có command nào khác được xen vào giữa. Tuy nhiên, Redis transaction không có rollback — nếu một command fail (runtime error như sai kiểu data), các…
Key expiration: dùng EXPIRE key seconds, PEXPIRE key milliseconds, hoặc SET key value EX seconds để tự động xoá key sau khoảng thời gian. Redis kiểm tra expiry theo hai cách: lazy expiration (kiểm tra khi access key) và active expiration (background job mỗi 100ms…
Memcached là cache thuần: đúng một kiểu dữ liệu (string), đa luồng, vận hành đơn giản. Redis có cả một bộ kiểu dữ liệu (String, Hash, List, Set, Sorted Set, Stream, HyperLogLog, Geospatial) kèm persistence, pub/sub, transaction, Lua scripting và clustering native. Chọn Memcached khi:…
Redis là multi-purpose in-memory store được dùng rộng rãi cho caching, session, rate limiting, leaderboard và distributed lock trong hầu hết production stack hiện đại. Các use case phổ biến của Redis trong production: - Caching: lưu kết quả database query, API response, rendered HTML…
Best practice là dùng dấu hai chấm : làm separator để tạo namespace hierarchy, ví dụ: user:1001:profile, user:1001:session, product:sku:ABC123:stock. Các rule quan trọng: dùng tên có ý nghĩa và mô tả rõ object type + identifier + attribute (ví dụ: order:orderid:status); tránh key quá dài…
HyperLogLog là probabilistic data structure để đếm unique elements (cardinality estimation) với sai số chuẩn ~0.81% nhưng dùng chỉ 12KB bộ nhớ cố định bất kể có 1 hay 1 tỷ unique element. Set chính xác 100% nhưng tốn memory tỷ lệ với số element.…
Redis Bitmap không phải data type riêng — đó là String với các bit operation. Mỗi String key có thể chứa đến 512MB = ~4 tỷ bits. Lệnh: SETBIT key offset 1, GETBIT key offset, BITCOUNT key (đếm số bit=1), BITOP AND/OR/XOR dest key1 key2.…
Leaderboard: O(log N) cho mỗi update. Sliding Window Rate Limiter dùng Sorted Set: Tất cả thao tác này cần wrap trong Lua script để atomic. So với Fixed Window: Sliding Window chính xác hơn, không có boundary spike. Nhược điểm: tốn memory hơn (lưu timestamp…
String approach: serialize toàn bộ object thành JSON và lưu vào một key — đơn giản, một GET là lấy toàn bộ. Nhược điểm: muốn update một field phải GET toàn bộ object, deserialize, update, serialize lại, SET — tốn băng thông và CPU; race…
Cache-Aside (lazy loading) — ứng dụng tự quản lý cache. Đọc: xem cache → miss → query DB → set cache → trả về. Ghi: update DB rồi invalidate hoặc update cache. - Được: chỉ cache thứ thực sự có người hỏi tới, và rất…
Session cần đặc tính: đọc/ghi nhanh (mỗi request authenticated cần verify session), TTL-based expiration (logout tự động sau idle time), và không cần persist lâu dài. Redis rất phù hợp: O(1) GET/SET, native TTL support (SETEX session:abc123 3600 '{userId:1,...}'), in-memory nên sub-millisecond latency. So với…
Redis Sentinel là hệ thống HA cho Redis single-master/replica setup — tự động monitor, notify và failover khi master fail. Sentinel chạy thành process riêng (thường 3+ Sentinel nodes để quorum). Chức năng: Monitoring — Sentinel liên tục ping master và replicas; Notification — alert…
Redis có 8 eviction policy; allkeys-lru là lựa chọn tốt nhất cho pure cache, volatile-lru khi mix cache và persistent keys, noeviction khi data không được phép mất. Khi Redis đạt maxmemory, eviction policy quyết định key nào bị xoá để nhường chỗ. Có 8…
Redis mạnh nhờ chạy in-memory và đơn luồng cho việc thực thi lệnh — chính hai đặc điểm đó cũng là giới hạn: - Giới hạn bởi dung lượng RAM (memory-bound): toàn bộ dataset (nóng) phải nằm gọn trong RAM, mà RAM đắt hơn đĩa…
Redis mặc định thiết kế để chạy trong mạng nội bộ tin cậy, nhưng có nhiều lớp bảo vệ: - AUTH (requirepass): đặt mật khẩu; client phải AUTH <password trước khi ra lệnh. Cơ chế cơ bản, một mật khẩu cho toàn server. - ACL…
Redis có cơ chế lưu xuống đĩa, nhưng độ bền vẫn thấp hơn một RDBMS và phải hiểu rõ trước khi tin tưởng. Hai cơ chế: - RDB: chụp snapshot toàn bộ dataset theo chu kỳ. File nhỏ, khởi động lại nhanh, nhưng mất phần…
Hot key là một key nhận lượng truy cập lớn bất thường — ví dụ cấu hình toàn hệ thống, sản phẩm flash sale, counter của một bài viral. Trong Redis Cluster, key được ánh xạ vào hash slot và mỗi slot thuộc đúng một…