Redis là một cơ sở dữ liệu nguồn mở (giấy phép BSD), NoSQL. Nó là một Cơ sở dữ liệu In-Memory (trong bộ nhớ), dựa trên khái niệm Key-Value Store (Lưu trữ Khóa-Giá trị). Redis còn được gọi là một Data Structure Store (Kho lưu trữ cấu trúc dữ liệu).
Hãy hiểu từng thuật ngữ một:
- Key-Value Datastore: Là mô hình lưu trữ dữ liệu, nơi dữ liệu được lưu trữ và truy xuất dưới dạng giá trị (value) đối với một khóa (key), khóa này định danh duy nhất giá trị được lưu trong database. Redis có thể được xem như một Bảng Băm (Hash Table) khổng lồ.
- In-Memory Database: Cơ sở dữ liệu In-Memory là database lưu trữ tất cả dữ liệu trong bộ nhớ chính (RAM). Nghĩa là khi bạn truy vấn database hoặc cập nhật dữ liệu, bạn chỉ truy cập bộ nhớ chính. Không có truy cập đĩa (disk) nào liên quan. Vì truy cập bộ nhớ chính nhanh hơn truy cập bộ nhớ đĩa rất nhiều, database Redis nhanh hơn hẳn các database dựa trên đĩa. Tuy nhiên, dữ liệu trong bộ nhớ có thể được duy trì (persisted) trên đĩa bằng cấu hình phù hợp.
- Data Structure Store: Trong Redis, khóa luôn là kiểu dữ liệu chuỗi (string) nhưng giá trị có thể là string, hash, set, sorted set, list, hyperloglog và geospatial indexes.

Redis là một kho dữ liệu rất linh hoạt và có khả năng mở rộng cao, có thể dùng làm Database, Message Broker và Cache Server. Nó là đơn luồng (single-threaded), nghĩa là nó chỉ xử lý một yêu cầu tại một thời điểm, tuy nhiên batch commands (lệnh hàng loạt) có thể dùng để giảm số lượng request đến Redis server.
Trong Redis, sự bền vững (persistence) của dữ liệu trong bộ nhớ chính có thể đạt được bằng hai cách khác nhau. Thứ nhất là dump (rivers) tất cả dữ liệu vào một file phẳng (flat file) trên ổ cứng. Thứ hai là lưu trữ tất cả các lệnh đã thực thi vào một file. Khi Redis server khởi động, nó hoặc nạp dữ liệu từ file dump, hoặc thực thi tuần tự tất cả các lệnh để đưa Redis server về trạng thái nhất quán và có thể sử dụng.
Tính năng chính:
Danh sách các tính năng chính của kho dữ liệu Redis như sau:
- Thao tác nguyên tử (Atomic Operations): Tất cả các thao tác Redis đều nguyên tử, đảm bảo nếu hai hoặc nhiều client đồng thời thực hiện thao tác CRUD trên Redis server, tất cả client đều nhận được giá trị cập nhật.
- Hỗ trợ nhiều kiểu dữ liệu: Hỗ trợ string, list, set, sorted set, bitmaps, v.v. Làm cho Redis đủ linh hoạt để dùng trong nhiều kịch bản.
- Cực nhanh: Lưu trữ tất cả dữ liệu trong bộ nhớ chính, làm cho nó cực nhanh. Nó cũng hỗ trợ pipelining (đường ống) lệnh, cho phép client cli và thư viện client thực hiện nhiều thao tác bằng cách dùng nhiều giá trị trong một lệnh.
- Hỗ trợ thư viện Client: Hỗ trợ hầu hết ngôn ngữ lập trình như C, C++, C#, Clojure, Java thông qua thư viện client. Bạn có thể tìm danh sách đầy đủ tại đây.
- Master/Slave Replication: Redis hỗ trợ replication Master/Slave qua cấu hình một dòng.
Khái niệm:
Danh sách các bài viết bao quát các khái niệm quan trọng trong Redis như sau:
- Các lệnh Keys (Keys Commands)
- Các lệnh String (String Commands)
- Các lệnh List (List Commands)
- Các lệnh Set (Set Commands)
- Các lệnh Hash (Hash Commands)
- Các lệnh Geo (Geo Commands)
- Hướng dẫn Redis Keys với thư viện Jedis
- Hướng dẫn Redis List với thư viện Jedis
- Hướng dẫn Redis Set với thư viện Jedis
- Hướng dẫn Redis Hash với thư viện Jedis
- Hướng dẫn Redis Geo với thư viện Jedis
- Hướng dẫn Redis Pub/Sub với thư viện Jedis
Nếu bạn thấy hữu ích, hãy chia sẻ suy nghĩ của bạn trong phần bình luận và lan tỏa cho người khác nhé.