+2

TỔNG HỢP 30 CÂU HỎI PHỎNG VẤN REDIS THƯỜNG GẶP

A. Beginner-Level Redis Questions:

  1. Redis là gì?

    • Redis (Remote Dictionary Server) là một công cụ mã nguồn mở, in-memory key-value data store có thể được sử dụng như một cơ sở dữ liệu, cache và message broker.
  2. Những tính năng chính của Redis là gì?

    • In-memory data storage, persistence, data replication, sharding, hỗ trợ nhiều data types, atomic operations, pub/sub messaging, và Lua scripting.
  3. Redis khác gì so với các cơ sở dữ liệu quan hệ truyền thống?

    • Redis là một in-memory key-value store với độ trễ cực thấp, trong khi các cơ sở dữ liệu quan hệ truyền thống thường dựa trên đĩa và sử dụng structured query language (SQL) để truy vấn dữ liệu. Redis cũng hỗ trợ các non-relational data structures như lists, sets và hashes.
  4. Những trường hợp sử dụng phổ biến của Redis là gì?

    • Caching, session management, real-time analytics, leaderboards, message queues, distributed locking, và pub/sub messaging.
  5. Redis hỗ trợ những data structures nào?

    • Strings, Lists, Sets, Sorted Sets, Hashes, Bitmaps, HyperLogLogs, Streams, và Geospatial indexes.
  6. Redis key là gì, và quy tắc đặt tên cho Redis keys là gì?

    • Một key trong Redis là một định danh duy nhất cho một phần dữ liệu. Redis keys là binary-safe và có thể dài đến 512MB. Quy tắc đặt tên phổ biến là sử dụng colons (:) làm dấu phân cách để tạo thành namespace (ví dụ: user:1001:info).
  7. Redis caching là gì?

    • Redis caching liên quan đến việc sử dụng Redis như một in-memory store hiệu suất cao để lưu trữ các dữ liệu truy cập thường xuyên nhằm cải thiện thời gian phản hồi của ứng dụng bằng cách giảm thiểu nhu cầu truy vấn một cơ sở dữ liệu lưu trữ chậm hơn.
  8. Làm thế nào để đặt một giá trị trong Redis?

    • Lệnh SET key value được sử dụng để lưu trữ một giá trị trong Redis dưới một key xác định.
  9. Làm thế nào để truy xuất một giá trị từ Redis?

    • Lệnh GET key truy xuất giá trị liên kết với key được chỉ định.
  10. Lệnh EXPIRE trong Redis là gì?

    • Lệnh EXPIRE key seconds đặt một thời gian hết hạn cho một key, sau đó key sẽ tự động bị xóa. Thời gian hết hạn được chỉ định bằng giây.
  11. Sự khác biệt giữa SETEXSET với EXPIRE là gì?

    • SETEX đặt một key với một giá trị và một thời gian hết hạn trong một lệnh (SETEX key seconds value), trong khi SET tiếp theo là EXPIRE đòi hỏi hai lệnh để đạt được cùng một hiệu quả.
  12. Redis eviction policy là gì?

    • Redis eviction policy quyết định cách Redis xử lý bộ nhớ khi đạt đến giới hạn bộ nhớ tối đa. Các chính sách phổ biến bao gồm noeviction, allkeys-lru, volatile-lru, allkeys-random, và volatile-ttl.
  13. Least Recently Used (LRU) eviction policy trong Redis là gì?

    • Chính sách LRU loại bỏ các keys được sử dụng ít nhất gần đây khi Redis đạt đến giới hạn bộ nhớ, đảm bảo rằng dữ liệu được truy cập thường xuyên vẫn được giữ trong bộ nhớ.
  14. Mục đích của lệnh FLUSHALL trong Redis là gì?

    • FLUSHALL được sử dụng để xóa tất cả các keys khỏi tất cả các cơ sở dữ liệu trong Redis, về cơ bản là làm sạch toàn bộ instance Redis.
  15. Redis đảm bảo tính bền vững của dữ liệu như thế nào?

    • Redis cung cấp hai phương pháp lưu trữ: RDB snapshots (ảnh chụp điểm trong thời gian của tập dữ liệu) và AOF (Append-Only File), ghi lại mọi thao tác ghi để lưu trữ dữ liệu lâu dài hơn.

B. Intermediate-Level Redis Questions:

  1. Redis cluster là gì?

    • Redis Cluster là một triển khai phân tán tự động chia nhỏ dữ liệu trên nhiều Redis nodes, cung cấp high availability và scalability mà không có một single point of failure.
  2. Sự khác biệt giữa Redis replication và Redis clustering là gì?

    • Replication bao gồm sao chép dữ liệu từ một master node sang một hoặc nhiều slave nodes để cung cấp redundancy và khả năng mở rộng đọc. Clustering chia nhỏ dữ liệu trên nhiều master nodes, cung cấp khả năng mở rộng ngang.
  3. Lệnh TTL trong Redis là gì, và nó làm gì?

    • TTL key trả về thời gian sống còn lại (tính bằng giây) cho một key có thiết lập thời gian hết hạn.
  4. Redis Pub/Sub là gì?

    • Redis Pub/Sub (Publish/Subscribe) là một mô hình nhắn tin cho phép một hoặc nhiều publishers gửi tin nhắn đến nhiều subscribers thông qua các channels, cho phép giao tiếp thời gian thực giữa các dịch vụ.
  5. Sự khác biệt giữa Redis Lists và Sets là gì?

    • Lists trong Redis là các collections có thứ tự của strings cho phép các phần tử trùng lặp, trong khi Sets là các collections không có thứ tự của các strings duy nhất.
  6. Redis Sorted Set là gì?

    • A Sorted Set là một tập hợp các phần tử duy nhất, mỗi phần tử liên kết với một score. Các phần tử được sắp xếp theo score của chúng, cho phép truy vấn hiệu quả theo phạm vi score.
  7. Làm thế nào để triển khai caching với Redis trong một ứng dụng web?

    • Một mẫu phổ biến là đầu tiên kiểm tra nếu dữ liệu có sẵn trong Redis (cache). Nếu dữ liệu không có, ứng dụng truy vấn cơ sở dữ liệu, lưu kết quả vào Redis, và trả lại dữ liệu. Điều này giảm tải cho cơ sở dữ liệu trong các yêu cầu tiếp theo.
  8. Redis transaction là gì, và làm thế nào để thực hiện nó?

    • Một Redis transaction nhóm các lệnh lại với nhau và thực thi chúng theo thứ tự. Nó được bắt đầu với lệnh MULTI, tiếp theo là các lệnh để thực thi, và sau đó EXEC để chạy transaction.
  9. Redis pipelines là gì?

    • Pipelining cho phép gửi nhiều lệnh đến Redis cùng một lúc mà không cần chờ phản hồi cho mỗi lệnh. Điều này giảm thời gian round-trip và tăng thông lượng.
  10. Redis Sentinel là gì?

    • Redis Sentinel là một hệ thống để quản lý và giám sát các Redis instances, đảm bảo high availability bằng cách tự động thực hiện failover nếu master node bị sập, và thông báo cho ứng dụng về các thay đổi trong Redis topology.

C. Advanced-Level Redis Questions:

  1. Redis xử lý concurrency như thế nào?

    • Redis chạy đơn luồng cho việc thực thi các lệnh, giúp tránh các vấn đề concurrency ở mức ứng dụng. Tuy nhiên, Redis sử dụng I/O multiplexing để xử lý nhiều kết nối đồng thời.
  2. Redis Lua script là gì, và khi nào nên sử dụng nó?

    • Redis hỗ trợ Lua scripting để thực thi một chuỗi các lệnh một cách atomically. Scripts hữu ích cho việc thực hiện nhiều thao tác cần được coi như một atomic operation, chẳng hạn như kiểm tra giá trị trước khi cập nhật nó.
  3. Sự khác biệt giữa Redis mget()get() là gì?

    • get() truy xuất giá trị của một single key, trong khi mget() truy xuất giá trị của nhiều keys cùng một lúc, giúp giảm bớt overhead của nhiều lần round-trip đến Redis.
  4. Redis Streams hoạt động như thế nào?

    • Redis Streams là một data structure để quản lý dữ liệu dạng log-like, hỗ trợ consumer groups, message acknowledgment, và persistence. Nó hữu ích cho event sourcing, message queues, và xử lý dữ liệu thời gian thực.
  5. Làm thế nào để scale Redis cho high availability và fault tolerance?

    • Để scale Redis, bạn có thể sử dụng replication để phân phối lưu lượng đọc, clustering cho horizontal scaling và data partitioning, và Redis Sentinel để giám sát và failover tự động, đảm bảo high availability và fault tolerance.

All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí