Redis Là Gì? Một số đặc điểm nổi bật của Redis

Bài viết này sẽ giới thiệu bạn về mã nguồn mở Redis. Nếu bạn cần hỗ trợ, xin vui lòng liên hệ VinaHost qua Hotline 1900 6046 ext.3, email về support@vinahost.vn hoặc chat với VinaHost qua livechat https://livechat.vinahost.vn/chat.php.

Redis Là Gì?

  • Redis (Remote Dictionary Server) là một mã nguồn mở được dùng để lưu trữ dữ liệu có cấu trúc, có thể sử dụng như một database, bộ nhớ cache hay một message broker.
  • Redis là cơ sở dữ liệu mang phong cách NoSQL.
  • Redis lưu trữ dữ liệu dưới dạng KEY-VALUE với nhiều tính năng được sử dụng rộng rãi.

Ví dụ: Name=Jonh thì Name chính là KEY, còn Jonh là VALUE.

  • Redis có thể hỗ trợ nhiều kiểu dữ liệu như: hash, list, set, sorted set, string…Tất cả dữ liệu được ghi và lưu trữ trên RAM, do đó tốc độ đọc ghi dữ liệu rất nhanh.
  • Ngoài ra, Redis còn cho phép scripting bằng ngôn ngữ Lua.

Một số đặc điểm nổi bật của Redis

  • Data model:

Khác với RDMS như MySQL, hay PostgreSQL, Redis không có table (bảng). Redis lưu trữ data dưới dạng KEY-VALUE. Thực tế thì Memcache cũng làm vậy, nhưng kiểu dữ liệu của Memcache bị hạn chế, không đa dạng được như Redis, do đó 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 dùng để lưu value.

  • 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: List là một danh sách của strings, sắp xếp theo thứ tự insert. Redis có thể thêm một phần tử vào đầu hoặc cuối list. List phù hợp cho các bài toán cần thao tác với các phần tử gần đầu và cuối vì việc truy xuất này là cực nhanh, cho dù insert 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 rất chậm.
  • 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ị.
  • SORTED SET (ZSET): 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. Các phần tử của zset được sắp xếp theo thứ tự từ score nhỏ tới lớn.

Ngoài ra, Redis còn hỗ trợ các kiểu dữ liệu khác như: Bit arrays, HyperLogLogs, Streams.

Để có thể quản lý được Redis bằng giao diện web các bạn có thể sử dụng công cụ phpRedisAdmin: https://github.com/erikdubbelboer/phpRedisAdmin để quản lý các database.

  • In-memory

Khác với các DBMS khác lưu trữ dữ liệu trên đĩa cứng, Redis lưu trữ dữ liệu trên RAM, do đó tốc độ đọc/ghi dữ liệu rất nhanh.

  • Persistent redis

Mặc dù Redis lưu trữ dữ liệu trên RAM nhưng nó vẫn cần lưu trữ dữ liệu trên ổ cứng. Thứ nhất là để đảm bảo tính toàn vẹn của dữ liệu khi có sự cố xảy ra (server bị tắt nguồn) cũng như tái tạo lại dataset khi restart server. Thứ hai là để gửi data đến các slave server, phục vụ cho tính năng replication. Redis cung cấp 2 phương thức chính cho việc sao lưu dữ liệu ra ổ cứng, đó là RDB (Redis DataBase File) và AOF (Append Only File).

Bài viết trên chỉ liệt kê một số đặc điểm nổi bật của Redis. Để biết thêm nhiều tính năng của Redis, các bạn có thể tham khảo tại trang doc của Redis. https://redis.io/documentation

18/03/2021
Was this article helpful?