2020.09.03

Giới thiệu về Redis

redis

REDIS – INTRODUCTION FOR BEGINNERS

Tổng quan về Redis

Redis là gì?

Redis là tên viết tắt của Remote Dictionary Server (Máy chủ từ điển từ xa) là kho dữ liệu được lưu trữ dưới dạng key-value trong bộ nhớ RAM có tốc độ truy cập nhanh được dùng chủ yếu làm cơ sở dữ liệu dạng NoSQL và bộ nhớ đệm (cache) bên cạnh đó còn được sử dụng cho một số tác vụ khác như chuyển tiếp tin nhắn (message broker), danh sách tác vụ cần xử lý (queue).

Dự Án Redis được viết bởi Salvatore Sanfilippo là dự án mã nguồn mở sử dụng giấy phép BSD (Berkeley Software Distribution). Hiện tại vẫn được tác giả hỗ trợ và phiên bản phát hành gần đây là bản Redis 6.0.

Redis có hỗ trợ tính năng replication (master-slave) cho phép chúng ta sao chép, đồng bộ hóa hai CSDL Redis khác nhau. Ngoài ra Redis còn hỗ trợ cluster với giải pháp phân cụm đảm bảo tính sẵn sàng với tốc độ cao.

Cách thức hoạt động của Redis

Dữ liệu của Redis nằm trên bộ nhớ RAM khác với các loại cơ sở dữ liệu khác thường được lưu trên ổ đĩa. Bằng cách loại bỏ sự cần thiết phải truy cập ổ đĩa nên dữ liệu trên Redis có tốc độ truy cập nhanh hơn do tránh được sự chậm trễ bởi thời gian tìm kiếm và sự phụ thuộc vào tốc độ đọc/ghi của ổ đĩa.
Redis thực hiện sao lưu dữ liệu (snapshot) vào ổ cứng sau mỗi khoảng thời gian nhất định để tối ưu tính toàn vẹn và khả năng phục hồi dữ liệu. Thông thường người dùng sẽ cài đặt để Redis thực hiện sao lưu mỗi 5 phút, nên trong trường hợp xảy ra sự cố, những dữ liệu ở các phút cuối sẽ không thể được lưu trữ.

Redis hỗ trợ ngôn ngữ lập trình nào?

Redis hỗ trợ phần lớn các giao thức và ngôn ngữ lập trình có thể kể như: Python, Java, PHP, PERL, GO, Ruby, C/C#/C++, JavaScript, Node.js.

Các kiểu dữ liệu của Redis

Khác với những kho dữ liệu dạng key-value đơn giản, có giới hạn về kiểu cấu trúc dữ liệu. Redis hỗ trợ nhiều cấu trúc dữ liệu khác nhau đáp ứng được những nhu cầu sử dụng khác nhau.

  • Kiểu Chuỗi (Strings): là kiểu giá trị cơ bản nhất của Redis có thể là văn bản hoặc dữ liệu nhị phân có thể có độ dài tối đa lên đến 512 Megabyte.
  • Kiểu Danh sách (Lists): đơn giản là danh sách bao gồm các chuỗi được sắp xếp theo thứ tự như chuỗi được chèn vào.
  • Kiểu tập (Sets): là tập hợp các chuỗi không có thứ tự, có thể thêm bớt và kiểm tra sự tồn tại của các phần tử. Số lượng phần tử tối đa của 1 tập là 2 32 – 1 tương đương 4,294,967,295 có nghĩa là hơn 4 tỷ thành viên mỗi tập hợp.
  • Kiểu tập được sắp xếp (Sorted sets): tương tự như kiểu tập, tập được sắp xếp bao gồm các chuỗi không lặp lại. Sự khác biệt là mỗi phần tử trong tập được sắp xếp sẽ liên kết với điểm số, các phần tử là duy nhất nhưng điểm số có thể được lặp lại.
  • Kiểu băm (Hashes): là một cấu trúc dữ liệu giữa các trường của chuỗi và dữ liệu của chuỗi. Vì vậy kiểu hashes là kiểu dữ liệu hoàn hảo để đại diện cho các đối tượng.
  • Kiểu Bitmaps: là kiểu dữ liệu cho phép thực hiện các tác vụ liên quan đến bit.
  • Kiểu HyperLogLogs: là cấu trúc dữ liệu xác suất để ước tính các phần tử duy nhất trong một tập dữ liệu.

Cài đặt Redis

Trong phần này sẽ hướng dẫn bạn cài đặt Redis trên server CentOS 7

A. Vì lý do Redis không có sẵn trong kho lưu trữ yum nên trước khi cài đặt Redis ta cần phải chạy lệnh để import gói cài đặt RPM (Red Hat Package Manager) vào kho lưu trữ:


B. Sau khi cài đặt ở bước A gói cài đặt Redis đã được thêm vào yum, chúng ta tiếp thực hiện câu lệnh cài đặt Redis lên server:

C. Sau khi chạy câu lệnh cài đặt chạy câu lệnh sau để kiểm tra Redis có được cài thành công trên server hay chưa và xem những thông tin của redis server:

D. Cho phép dịch vụ Redis khởi động khi khởi động hệ thống và khởi động dịch vụ Redis:

E. Kiểm tra xem dịch vụ Redis trên server đã hoạt động hay chưa:

Nếu kết quả trả về là “PONG” Redis đã hoạt động

Tổng kết

Như đã giới thiệu ở trên, Redis hiện nay được cho là dễ cài đặt và sử dụng với nhiều mục đích khác nhau bởi sự hỗ trợ đa dạng kiểu dữ cũng như khả năng kết hợp với với các loại hình cơ sở dữ liệu khác, hơn nữa có thể hỗ trợ nhiều ngôn ngữ lập trình phổ biến. 

Ngoài bài viết này bạn có thể tìm hiểu thêm về kỹ thuật qua các bài viết khác ví dụ như bài viết VueJS là gì . Hy vọng rắng bạn sẽ tìm được nhiều thông tin hữu ích !

0 Comments
Inline Feedbacks
View all comments