A. Câu Hỏi Mới Bắt Đầu Về Redis:
-
Redis là gì?
- Redis (Máy chủ Từ điển Từ xa) là một kho dữ liệu dạng key-value ở bộ nhớ với mã nguồn mở, có thể được sử dụng như một cơ sở dữ liệu, bộ nhớ đệm và trình thông điệp.
-
Các tính năng chính của Redis là gì?
- Lưu trữ dữ liệu trong bộ nhớ, khả năng giữ dữ liệu, sao chép dữ liệu, phân mảnh, hỗ trợ nhiều loại dữ liệu khác nhau, các thao tác nguyên tử, thông điệp pub/sub và lập trình Lua.
-
Redis khác với các cơ sở dữ liệu quan hệ truyền thống như thế nào?
- Redis là một kho dữ liệu dạng key-value lãnh tụ bộ nhớ với độ trễ cực thấp, trong khi các cơ sở dữ liệu quan hệ truyền thống thường lưu trữ trên đĩa và sử dụng ngôn ngữ truy vấn có cấu trúc (SQL) để truy xuất dữ liệu. Redis cũng hỗ trợ các cấu trúc dữ liệu phi quan hệ như danh sách, tập hợp và băm.
-
Một số trường hợp sử dụng phổ biến của Redis là gì?
- Lưu cache, quản lý phiên, phân tích thời gian thực, bảng xếp hạng, hàng đợi thông điệp, khóa phân tán và thông điệp pub/sub.
-
Redis hỗ trợ những cấu trúc dữ liệu nào?
- Chuỗi, Danh sách, Tập hợp, Tập hợp có thứ tự, Băm, Bitmap, HyperLogLogs, Luồng và chỉ mục địa lý.
-
Khóa Redis là gì, và các quy tắc đặt tên cho khóa Redis là gì?
- Khóa trong Redis là một định danh duy nhất cho một mảnh dữ liệu. Các khóa Redis an toàn với nhị phân và có thể dài tới 512MB. Các quy tắc đặt tên phổ biến bao gồm việc sử dụng dấu hai chấm (
:
) làm dấu phân cách để tạo không gian tên (ví dụ:user:1001:info
).
- Khóa trong Redis là một định danh duy nhất cho một mảnh dữ liệu. Các khóa Redis an toàn với nhị phân và có thể dài tới 512MB. Các quy tắc đặt tên phổ biến bao gồm việc sử dụng dấu hai chấm (
-
Redis caching (lưu cache) là gì?
- Redis caching là việc sử dụng Redis như một kho lưu trữ ở bộ nhớ hiệu suất cao cho dữ liệu thường xuyên truy cập để cải thiện thời gian phản hồi của ứng dụng bằng cách giảm thiểu việc truy vấn vào cơ sở dữ liệu chậm hơn.
-
Cách đặt giá trị vào Redis như thế nào?
- Lệnh
SET key value
được sử dụng để lưu một giá trị trong Redis dưới một khóa nhất định.
- Lệnh
-
Cách truy xuất giá trị từ Redis như thế nào?
- Lệnh
GET key
truy xuất giá trị liên kết với khóa được chỉ định.
- Lệnh
-
Lệnh
EXPIRE
trong Redis là gì?
- Lệnh
EXPIRE key seconds
đặt một thời gian chờ cho khóa, và sau đó khóa sẽ bị xóa tự động. Thời gian hết hạn được chỉ định bằng giây.
- Sự khác biệt giữa
SETEX
vàSET
vớiEXPIRE
là gì?
SETEX
đặt một khóa với giá trị và thời gian hết hạn trong một lệnh duy nhất (SETEX key seconds value
), trong khiSET
sau đó theo sau làEXPIRE
yêu cầu hai lệnh để đạt được cùng một hiệu ứng.
- Chính sách loại bỏ (eviction policy) Redis là gì?
- Chính sách loại bỏ Redis xác đị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
.
- Chính sách loại bỏ Least Recently Used (LRU) trong Redis là gì?
- Chính sách LRU loại bỏ các khóa được sử dụng ít gần đây nhất khi Redis đạt đến giới hạn bộ nhớ. Điều này đảm bảo dữ liệu được truy cập thường xuyên vẫn tồn tại trong bộ nhớ.
- Mục đích của lệnh
FLUSHALL
trong Redis là gì?
FLUSHALL
được sử dụng để xóa tất cả các khóa khỏi tất cả các cơ sở dữ liệu trong Redis, thực tế là làm sạch toàn bộ phiên bản Redis.
- Redis đảm bảo tính khả dụng dữ liệu bằng cách nào?
- Redis cung cấp hai phương pháp để đảm bảo tính khả dụng: RDB snapshots (ảnh chụp dữ liệu tại một thời điểm) và AOF (Append-Only File), ghi nhận mọi thao tác ghi để đảm bảo tính khả dụng bền vững hơn.
B. Câu Hỏi Trung Cấp Về Redis:
-
Redis Cluster là gì?
- Redis Cluster là một triển khai phân tán tự động phân mảnh dữ liệu giữa nhiều nút Redis, cung cấp khả năng sẵn có và mở rộng mà không có điểm thất bại đơn.
-
Sự khác biệt giữa sao chép Redis và cụm Redis là gì?
- Sao chép liên quan đến việc sao chép dữ liệu từ nút chính đến một hoặc nhiều nút phụ để cung cấp tính dư thừa và khả năng mở rộng đọc. Cụm phân vùng dữ liệu giữa nhiều nút chính, cung cấp khả năng mở rộng theo chiều ngang.
-
Lệnh
TTL
trong Redis là gì, và nó hoạt động như thế nào?TTL key
trả về thời gian còn lại để sống (bằng giây) cho một khóa đã có thời gian hết hạn được đặt.
-
Redis Pub/Sub là gì?
- Redis Pub/Sub (Xuất bản/Đăng ký) là một mô hình thông điệp cho phép một hoặc nhiều nhà xuất bản gửi thông điệp đến nhiều người đăng ký qua các kênh, cho phép giao tiếp thời gian thực giữa các dịch vụ.
-
Sự khác biệt giữa Redis Lists và Sets là gì?
- Danh sách trong Redis là các tập hợp có thứ tự của chuỗi có thể có các phần tử trùng lặp, trong khi Tập hợp là các tập hợp không có thứ tự của các chuỗi duy nhất.
-
Redis Sorted Set là gì?
- Sorted Set là một tập hợp các phần tử duy nhất, trong đó mỗi phần tử đều có một điểm số liên kết. Các phần tử được sắp xếp theo điểm số của chúng, cho phép thực hiện các truy vấn theo khoảng điểm số một cách hiệu quả.
-
Cách thực hiện lưu cache với Redis trong một ứng dụng web như thế nào?
- Một mẫu thông dụng là kiểm tra xem dữ liệu có tồn tại trong Redis (lưu cache) không. 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ả về dữ liệu. Điều này làm giảm tải cho cơ sở dữ liệu cho các yêu cầu sau này.
-
Giao dịch Redis là gì, và nó được thực hiện như thế nào?
- Một giao dịch Redis nhóm một loạt các lệnh lại với nhau và thực hiện chúng theo thứ tự. Nó được bắt đầu với lệnh
MULTI
, sau đó là các lệnh cần thực hiện, và sau đóEXEC
để chạy giao dịch.
- Một giao dịch Redis nhóm một loạt các lệnh lại với nhau và thực hiện chúng theo thứ tự. Nó được bắt đầu với lệnh
-
Pipelines Redis là gì?
- Pipeline 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 thiểu thời gian vòng đi vòng lại và tăng thông lượng.
-
Redis Sentinel là gì?
- Redis Sentinel là một hệ thống để quản lý và giám sát các phiên bản Redis, đảm bảo sẵn có cao bằng cách tự động thực hiện chuyển đổi khi nút chính gặp sự cố và thông báo cho ứng dụng về các thay đổi trong cấu trúc Redis.
C. Câu Hỏi Nâng Cao Về Redis:
-
Redis xử lý đồng thời như thế nào?
- Redis chạy trên một luồng duy nhất để thực thi các lệnh, giúp tránh các vấn đề đồng thời ở cấp độ ứng dụng. Tuy nhiên, Redis sử dụng đa hợp I/O để xử lý nhiều kết nối đồng thời.
-
Lua script của Redis là gì, và khi nào bạn sẽ sử dụng nó?
- Redis hỗ trợ lập trình Lua để thực hiện một chuỗi lệnh một cách nguyên tử. Các script rất hữu ích cho việc thực hiện nhiều thao tác nên được coi là một thao tác nguyên tử duy nhất, chẳng hạn như kiểm tra một giá trị trước khi cập nhật nó.
-
Sự khác biệt giữa
mget()
vàget()
của Redis là gì?get()
lấy giá trị của một khóa duy nhất, trong khimget()
lấy giá trị của nhiều khóa cùng một lúc, giúp giảm tải cho nhiều vòng đi vòng lại đến Redis.
-
Redis Streams hoạt động như thế nào?
- Redis Streams là một cấu trúc dữ liệu cho việc quản lý dữ liệu giống như nhật ký, hỗ trợ các nhóm tiêu dùng, xác nhận thông điệp và khả năng lưu trữ. Nó rất hữu ích cho việc nguồn sự kiện, hàng đợi thông điệp, và xử lý dữ liệu thời gian thực.
-
Làm thế nào để bạn mở rộng Redis cho khả năng sẵn có và tính chịu lỗi?
- Để mở rộng Redis, bạn có thể sử dụng sao chép để phân phối lưu lượng đọc, cụm để mở rộng theo chiều ngang và phân mảnh dữ liệu, và Redis Sentinel để giám sát và tự động chuyển đổi, đảm bảo tính khả dụng và chịu lỗi cao.
Đọc thêm về các lệnh Redis và RESTful API với Redis.
Nếu bạn thấy thông tin này hữu ích, hãy cho tôi biết bằng cách để lại một 👍 hoặc một bình luận! Nếu bạn nghĩ bài viết này có thể hữu ích cho ai đó, hãy chia sẻ nó! Cảm ơn bạn rất nhiều! 😃
source: viblo