Redis là gì? Tổng quan về Redis - Stolennguyen Website

Redis là gì?

Redis là gì

Khái niệm

Redis là gì? Redis là cơ sở dữ liệu NoSQL, lưu trữ dữ liệu với dạng KEY-VALUE với nhiều tính năng được sử dụng rộng rãi. Nó có thể hỗ trợ nhiều kiểu dữ liệu như: strings, hashes, lists, sets, sorted. Đồng thời có thể cho phép scripting bằng ngôn ngữ Lua.

Redis Cache là gì

Hỗ trợ nhiều kiểu cấu trúc dữ liệu phổ biến (hash, list, set, sorted set, string)cùng với công nghệ đọc ghi dữ liệu được thiết kế và tối ưu hiệu suất tốt hơn memcached nên Redis thường được sử dụng làm hệ thống lưu trữ cache-bộ nhớ đệm cho các ứng dụng cần truy xuất dữ liệu với tốc độ phản hồi nhanh như: website với hàng triệu lượt truy cập, các dịch vụ webserive, giảm tải hệ thống database cho các kiến trúc phần mềm lớn.

Sự ra đời của Redis

Trước tiên, chúng ta sẽ cùng nhau tìm hiểu về sự ra đời của Redis. Câu chuyện bắt đầu khi tác giả của Redis, Salvatore Sanfilippo (nickname: antirez), cố gắng làm những công việc gần như là không thể với SQL Database!

Server của antirez nhận 1 lượng lớn thông tin từ nhiều trang web khác nhau thông qua JavaScript tracker, lưu trữ n page view cho trừng trang và hiển thị chúng theo thời gian thực cho user, kèm theo đó là lưu trữ 1 lượng nhỏ lịch sử hiển thị của trang web. Khi số lượng page view tăng đến hàng nghìn page trên 1 giây, antirez không thể tìm ra cách tiếp cận nào thực sự tối ưu cho việc thiết kế database của mình.

Tuy nhiên, anh ta nhận ra rằng, việc lưu trữ 1 danh sách bị giới hạn các bản ghi không phải là vấn đề quá khó khăn. Từ đó, ý tưởng lưu trữ thông tin trên RAM và quản lý các page views dưới dạng native data với thời gian pop và push là hằng số được ra đời. Antirez bắt tay vào việc xây dựng prototype bằng C, bổ sung tính năng lưu trữ thông tin trên đĩa cứng và… Redis ra đời.

Các kiểu dữ liệu

STRING: string, integer hoặc float. Redis có thể làm việc với cả string, từng phần của string, cũng như tăng/giảm giá trị của integer, float.

LIST: danh sách liên kết của các strings. Redis hỗ trợ các thao tác push, pop từ cả 2 phía của list, trim dựa theo offset, đọc 1 hoặc nhiều items của list, tìm kiếm và xóa giá trị.

SET: tập hợp các string (không được sắp xếp). Redis hỗ trợ các thao tác thêm, đọc, xóa từng phần tử, kiểm tra sự xuất hiện của phần tử trong tập hợp. Ngoài ra Redis còn hỗ trợ các phép toán tập hợp, gồm intersect/union/difference.

HASH: lưu trữ hash table của các cặp key-value, trong đó key được sắp xếp ngẫu nhiên, không theo thứ tự nào cả. Redis hỗ trợ các thao tác thêm, đọc, xóa từng phần tử, cũng như đọc tất cả giá trị.

ZSET (sorted set): là 1 danh sách, trong đó mỗi phần tử là map của 1 string (member) và 1 floating-point number (score), danh sách được sắp xếp theo score này. Redis hỗ trợ thao tác thêm, đọc, xóa từng phần tử, lấy ra các phần tử dựa theo range của score hoặc của string.

Ưu Điểm

Redis hỗ trợ thêm mới, cập nhật, xoá dữ liệu một cách nhanh chóng.

Lưu trữ dữ liệu dạng KEY-VALUE.

Dữ liệu được lưu trữ trên RAM giúp việc truy xuất dữ liệu một cách nhanh chóng. Ngoài ra bạn có thể cấu hình để Redis có thể lưu trữ dữ liệu trên ổ cứng.

Bạn có thể cấu hình cho key tự động xoá trong khoảng thời gian nhất định(expire).

Hỗ trợ nhiều loại kiểu dữ liệu khác nhau.

Hỗ trợ Queue (hàng đợi) thông qua cơ chế PUB/SUB, chúng ta có thể dùng Redis để làm hệ thống queue cho website xử lý tuần tự từng request.

Nhược Điểm

Vì Redis sử dụng RAM làm bộ nhớ cho mình nên khi lượng file cache lớn thì sẽ dẫn đến trường hợp thiếu RAM cho Server. Đây là nhược điểm lớn nhất của Redis.

Ứng dụng

Hiện nay có rất nhiều website sử dụng Redis để caching cho website của mình từ những cơ sở dữ liệu như MySQL đã quá nặng nề. Giúp làm tăng tốc quá trình đọc dữ liệu, do Redis đọc dữ liệu từ RAM cho nên tốc độ truy xuất nhanh hơn, giảm thời gian tải trang cho website của mình.

tăng tốc website bằng redis

Khi có bất kỳ thay đổi về dữ liệu như Update, Insert, Delete trong MySQL thì hệ thống sẽ đồng thời cập nhật dữ liệu trên Redis để giúp dữ liệu có thể đồng bộ được với nhau.

Hoặc các bạn có thể sử dụng Redis để làm hệ thống Tracking cho website của mình, do Redis hỗ trợ đọc ghi rất nhanh cho nên chúng ta có thể làm hệ thống đếm view cho website.

Kết luận

Redis là một sự lựa chọn tuyệt vời khi ta cần đến một server lưu trữ dữ liệu đòi hỏi tính mở rộng cao (scaleable) và chia sẻ bởi nhiều tiến trình, nhiều ứng dụng và nhiều server khác nhau. Chỉ riêng cơ chế tương tác giữa các tiến trình đã cực kỳ khó nhằn rồi. Do đó việc ta có thể tương tác cross-platform, cross-server, và cross-application đã làm Redis trở thành một lựa chọn đúng đắn cho rất rất nhiều công việc khác nhau. Tốc độ cực cao của Redis cũng có thể được lợi dụng để làm caching layer.

Như vậy qua bài viết Redis là gì hy vọng bạn hiểu thêm về Redis. Nếu bạn cảm thấy bài viết hay. Hãy chia sẻ bạn bè cùng đọc nhé! Và nhớ thường xuyên truy cập Stolennguyen Website để thường xuyên xem những bài viết mới nhất nhé!

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *