Khái niệm Redis là một trong những cơ sở dữ liệu giúp cho người dùng có thể gia tăng khả năng để lưu trữ dữ liệu. Để bạn đọc hiểu rõ hơn, trong bài viết này 123job chúng tôi sẽ lý giải Redis là gì cũng như những ứng dụng nổi bật của Redis.

Bên cạnh những cơ sở dữ liệu nổi bật và phổ biến như NSQL hay MongoDB thì Redis luôn là lựa chọn số 1 của các Developer. Vậy Redis là gì? Ứng dụng của Redis cache như thế nào? Nếu bạn là một Developer tài ba và muốn chọn cơ sở dữ liệu cho dự án tâm huyết trong cuộc đời của mình thì chắc chắn sẽ mang tới nhiều ưu việt. Xem ngay bài viết dưới đây của 123job.vn sẽ cung cấp cho bạn đọc nhiều thông tin hữu ích xoay quanh Redis.

I. Redis là gì?

1. Khái niệm redis là gì?

Redis là gì? – Redis (REmote DIctionary Server) là một mã nguồn mở thường được dùng để lưu trữ các dữ liệu có cấu trúc, có thể sử dụng mã nguồn như một database, bộ nhớ cache hay thậm chí là một message broker.

Khái niệm Redis là gì?

Khái niệm Redis là gì?

Nó là một hệ thống lưu trữ các dữ liệu dưới dạng KEY-VALUE rất mạnh mẽ và phổ biến trên thị trường hiện nay. Redis cache nổi bật bởi việc hỗ trợ nhiều cấu trúc dữ liệu cơ bản như:hash, list, set, sortedset, string… Tất cả dữ liệu được ghi và lưu trên ram, do đó tốc độ đọc ghi dữ liệu rất là nhanh.

2. Sự ra đời 

Câu chuyện bắt đầu từ khi tác giả của Redis, Salvatore Sanfilippo (có nickname là: antirez), cố gắng làm ra những công việc gần như là không thể với những SQL Database. Server của antirez nhận được 1 lượng lớn thông tin từ rất nhiều trang web khác nhau thông qua JavaScript tracker, lưu trữ n page view cho từng trang và hiển thị chúng theo thời gian thực cho người dùng, kèm theo đó là những lưu trữ 1 lượng nhỏ lịch sử hiển thị của những trang web.

Khi số lượng page view tăng lên đến hàng nghìn page trên 1 giây, antirez lại không thể tìm ra cách tiếp cận nào mà nó thực sự tối ưu cho việc thiết kế database của chính mình. Tuy nhiên, anh ta nhận ra một điều rằng, việc lưu trữ 1 danh sách bị giới hạn các bản ghi như vậy không phải là vấn đề quá khó khăn. Từ đó, những ý tưởng lưu trữ thông tin quan trọng trên RAM và quản lý thuận tiện các page views dưới dạng native data với thời gian pop và push là hằng số chính thức đượ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 cache ra đời.

Xem thêm: Abstract class là gì? Phân biệt Abstract class và Interface

II. Các đặc trưng cơ bản của redis là gì?       

1. Data model

Khác với RDMS như MySQL, hay PostgreSQL, Redis thì lại không có bảng. Redis cache lưu trữ data dưới dạng key-value. Thực tế thì memcache cũng làm được vậy, nhưng kiểu dữ liệu của memcache thì luôn bị hạn chế, không đa dạng được như bên Redis, do đó nó không hỗ trợ được nhiều thao tác từ phía người dùng. Dưới đây là sơ lược về các kiểu dữ liệu Redis server dùng để lưu value.

  • STRING: Có thể là string hay integer hoặc float. Redis server 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 chi tiết của các strings. Redis cache 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 thậm chí là nhiều items của list, tìm kiếm và xóa giá trị đó.
  • SET chính là tập hợp các string (không được sắp xếp). Nó sẽ hỗ trợ các thao tác thêm, đọc, xóa từng phần tử và kiểm tra sự xuất hiện của các phần tử trong tập hợp. Ngoài ra nó còn hỗ trợ thêm các phép toán tập hợp, bao gồm  intersect/union/difference.
  • HASH: Lưu trữ hash table của hầu hết các cặp key-value, trong đó key được sắp xếp theo cách ngẫu nhiên, không theo thứ tự nào cả. Redis server 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 (sortedset): 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 cache 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.

2. Master/Slave replication

Đây không phải là đặc trưng mà quá nổi bật, các DBMS khác hiện nay thì đều có tính năng này, tuy nhiên chúng ta nêu ra ở đây để chắc chắn rằng, nó không kém cạnh các DBMS nào trên thị trường về tính năng Replication.

3. In-memory

Không như các DBMS khác thường lưu trữ dữ liệu trên đĩa cứng, Redis lại lưu trữ dữ liệu trên RAM, và đương nhiên là với thao tác đọc/ghi trên RAM. Với người làm công nghệ thông tin bình thường, ai cũng hiểu rằng thao tác trên RAM nhanh hơn rất nhiều so với trên ổ cứng, nhưng chắc chắn trong số chúng ta sẽ có cùng câu hỏi: Điều gì sẽ xảy ra với data của chúng ta sau khi server bị tắt?

Rõ ràng một điều là toàn bộ dữ liệu trên RAM sẽ bị mất đi khi tắt server, vậy làm thế nào để Redis server bảo toàn data và vẫn duy trì được ưu thế xử lý dữ liệu trên RAM. Chúng ta sẽ cùng nhau tìm hiểu về cơ chế hoạt động, lưu dữ liệu trên ổ cứng của Redis trong phần tiếp theo của bài viết nhé.

4. Persistent redis

Dù cho làm việc với data dưới dạng key-value lưu trữ trên RAM thì Redis vẫn cần lưu trữ dữ liệu ở trên ổ cứng. Thứ nhất là để đảm bảo trọn vẹn dữ liệu khi có sự cố xảy ra (server bị tắt nguồn) đồng thời tái tạo lại dataset khi restart server, thứ hai là để gửi data đến với các slave server, phục vụ chính cho tính năng replication. Redis cache cung cấp 2 phương thức chính cho việc sao lưu dữ liệu ra ổ cứng, đó là RDB và AOF. RDB (Redis DataBase file)

Xem thêm: DHCP là gì? Gợi ý các giải pháp để bảo mật của DHCP

III. Các kiểu dữ liệu trong Redis

Khác với RDMS như MySQL, hay PostgreSQL, Redis server không có table (bảng). Nó sẽ luôn lưu trữ data dưới dạng key-value. Thực tế thì memcache cũng làm được vậy, nhưng kiểu dữ liệu của memcache thì luôn bị hạn chế, không đa dạng được như bên Redis, do đó nó không hỗ trợ được nhiều thao tác từ phía người dùng. Dưới đây là sơ lược về các kiểu dữ liệu Redis server dùng để lưu value.

1. String

Có thể là string hay integer hoặc float. Redis server 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.

2. List

List là một danh sách chi tiết của strings, nhằm sắp xếp theo thứ tự insert. Nó có thể thêm một phần tử nào đó vào đầu hoặc cuối của list. List phù hợp với các bài toán cần đến thao tác với các phần tử gần đầu và cuối vậy nên việc truy xuất này là cực kì nhanh chóng, cho dù insert có đến cả triệu phần tử. Tuy nhiên nhược điểm đó là việc truy cập vào các phần tử ở giữa list diễn ra rất chậm.

3. Set

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

4. Hash

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

5. Sorted set (ZSet)

Đây là 1 danh sách mà trong đó mỗi phần tử sẽ là map của 1 string (member) và 1 floating-point number (score), danh sách chi tiết được sắp xếp theo score này. Các phần tử của zset luôn được sắp xếp theo thứ tự từ score nhỏ tới score lớn. Ngoài ra, Redis server còn hỗ trợ các data types khác như: Bit arrays, HyperLogLogs, Streams. 

Xem thêm: Các bạn có biết phần mềm SPSS là gì? Các chức năng và cách sử dụng phần mềm SPSS

IV. Các ứng dụng của Redis 

Những ứng dụng xoay quanh Redis

Những ứng dụng xoay quanh Redis 

Sau khái niệm redis là gì thì chúng ta hãy đi tìm hiểu đến ứng dụng thường ngày của Redis. Ngoài tính năng lưu trữ các cặp KEY-VALUE trên RAM thì Redis còn hỗ trợ các tính năng như sắp xếp, query, backup dữ liệu trên đĩa cứng cho phép bạn có thể phục hồi dữ liệu trên hệ thống khi mà hệ thống gặp sự cố…và có thể nhân bản (Chạy nhiều Server Redis cùng lúc).

1. Caching

Sử dụng làm bộ nhớ đệm. Chính tốc độ đọc ghi nhanh chóng mà Redis có thể làm bộ nhớ đệm, nơi có thể chia sẻ các dữ liệu giữa các ứng dụng hoặc làm database tạm thời. Ngoài ra Redis cache có thể sử dụng để làm Full Page Cache cho website. Cũng vì tính nhất quán của Redis, cho dù restart Redis server thì người dùng cũng không có cảm nhận chậm khi tải trang.

2. Counter

Sử dụng làm bộ đếm. Với thuộc tính đó là tăng giảm thông số rất nhanh trong khi dữ liệu đang được lưu trên RAM, sets và sorted sets cũng sẽ được sử dụng để thực hiện đếm lượt view của một website hay các bảng xếp hạng trong game chẳng hạng. Nó sẽ hỗ trợ thread safe do đó nó có thể đồng bộ dữ liệu nhanh chóng giữa các request.

3. Publish/Subscribe

Tạo kênh chia sẻ dữ liệu. Redis cache hỗ trợ tạo các channel để trao đổi dữ liệu giữa publisher và subscriber giống như channel trong Socket Cluster hay topic trong Apache Kafka. Ví dụ như: Pub/Sub luôn được sử dụng nhằm theo dõi các kết nối trong mạng xã hội hoặc các hệ thống chat.

4. Queues

Tạo hàng đợi để lần lượt xử lý những request. Nó cho phép người dùng lưu trữ theo list và cung cấp rất nhiều thao tác khác nhau với các phần tử trong list, vì vậy mà nó còn được sử dụng như một message queue nguyên bản.

Xem thêm: Trực quan hoá dữ liệu là gì? Tại sao nói Data Visualization vô cùng quan trọng

V. Vì sao Redis được các Developers săn đón? 

Ưu điểm lớn nhất để thu hút các lập trình viên săn đón Redis là gì? Với ứng dụng redis, người dùng sẽ được “tận hưởng” nhiều điểm cộng hoàn hảo không thể nào lý tưởng hơn:

  • Redis server hỗ trợ người dùng có thể thêm mới hoặc loại bỏ dữ liệu trong thời gian ngắn.
  • Redis có thể nhận và ghi nhớ dữ liệu lên Ram và có thể xuất hiện trên Disk tại cùng một thời điểm.
  • Key của Redis luôn là một string nhưng chúng được hỗ trợ sử dụng linh hoạt và đa dạng các value ví dụ như List, Sorted sets, Sets,...
  • Dễ dàng di chuyển các cặp key từ cơ sở dữ liệu này sang cơ sở dữ liệu khác nhanh chóng.
  • Redis cache được trang bị nhiều lệnh đặc biệt. Vì thế mà chúng rất nhanh và gọn trong các quá trình lấy và ghi dữ liệu.
  • Tính năng Master - slave sẽ thích hợp cho người dùng nào muốn gia tăng sự an toàn cho dữ liệu của mình, mở rộng hoặc thu hẹp không gian lưu trữ Data theo ý muốn.
  • Người dùng có thể tìm kiếm dữ liệu một cách nhanh chóng nhất.
  • Redis server cho phép người dùng sử dụng linh hoạt nhiều kiểu dữ liệu khác nhau.
  • Người dùng có thể để key tự động xóa đi ở một thời gian nhất định nào đó.

Tuy nhiều ưu điểm là vậy, nhưng nó không phải là một hệ thống lưu trữ dữ liệu hoàn hảo trên thị trường. 

Xem thêm: Data Modeling là gì? Cách áp dụng mô hình hoá dữ liệu trong doanh nghiệp

VI. Kết luận

123job.vn tin rằng với những bật mí Redis là gì? Ứng dụng tuyệt vời của Redis trên đây sẽ giúp cho bạn đọc có được gợi ý quý giá và hữu ích về một hệ thống lưu trữ dữ liệu đơn giản. Không đơn thuần chỉ là nơi lưu trữ dữ liệu mà Redis cache còn có nhiều ứng dụng linh hoạt và xứng đáng được người dùng lựa chọn!