Redis là gì?
Redis là gì? – Redis (Remote DIctionary Server)là một phần mềm mã nguồn mở để lưu trữ dữ liệu có cấu trúc, có thể được sử dụng làm cơ sở dữ liệu, bộ đệm hoặc môi giới thông báo.
Đây là một hệ thống lưu trữ dữ liệu KEY-VALUE rất mạnh mẽ và phổ biến hiện nay. Redis nổi bật với việc hỗ trợ nhiều cấu trúc dữ liệu cơ bản như: hash, list, set, sorted set, string… Tất cả dữ liệu được ghi và lưu trữ trên ram nên tốc độ đọc ghi dữ liệu rất nhanh. là rất nhanh chóng nhanh chóng.
Ứng dụng Redis
Sau khi nói về redis là gì, hãy nói về ứng dụng của Redis. Ngoài việc lưu trữ KEY-VALUE trên RAM , Redis còn hỗ trợ sắp xếp, truy vấn, sao lưu dữ liệu trên đĩa cứng cho phép bạn khôi phục dữ liệu trong trường hợp hệ thống bị treo… và có thể nâng phiên bản (chạy nhiều Redis server cùng lúc).
- Bộ đệm: Được sử dụng làm bộ đệm. Redis có thể dùng làm cache, nơi chia sẻ dữ liệu giữa các ứng dụng, hoặc làm cơ sở dữ liệu tạm thời để có tốc độ đọc ghi nhanh. Ngoài ra Redis có thể dùng để làm Full Page Cache cho website. Cũng vì tính nhất quán của Redis, ngay cả khi Redis được khởi động lại, người dùng sẽ không cảm thấy chậm khi tải trang.
- Bộ đếm: Dùng làm bộ đếm. Khi dữ liệu được lưu trữ trong RAM, các tham số được cộng và trừ rất nhanh, đồng thời các tập hợp và tập hợp đã sắp xếp được sử dụng để tính toán số lần xem trang cho các trang web, chẳng hạn như xếp hạng trong trò chơi. Redis hỗ trợ an toàn luồng, vì vậy dữ liệu có thể được đồng bộ hóa giữa các yêu cầu.
- Xuất bản/Đăng ký (Pub/Sub): Tạo kênh chia sẻ dữ liệu. Redis hỗ trợ tạo kênh để trao đổi dữ liệu giữa nhà xuất bản và người đăng ký, chẳng hạn như kênh trong Socket Cluster hoặc chủ đề trong Apache Kafka. Ví dụ:Pub/Sub được sử dụng để theo dõi các kết nối trong mạng xã hội hoặc hệ thống trò chuyện.
- Hàng đợi: Tạo một hàng đợi để xử lý các yêu cầu theo trình tự. Redis cho phép lưu trữ trong danh sách và cung cấp nhiều thao tác trên các phần tử danh sách, vì vậy nó cũng có thể được sử dụng làm hàng đợi tin nhắn.
Các loại dữ liệu trong RedisData
Không giống như RDMS như MySQL hoặc PostgreSQL, Redis không có bảng. Redis lưu trữ dữ liệu dưới dạng cặp khóa-giá trị. Thực chất memcache cũng làm như vậy nhưng các kiểu dữ liệu của memcache hạn chế, không đa dạng như Redis nên không hỗ trợ nhiều thao tác của người dùng. Sau đây là tổng quan ngắn gọn về các loại dữ liệu mà Redis sử dụng để lưu trữ giá trị.
– CHUỖI: Một chuỗi, số nguyên hoặc số float. Redis có thể xử lý toàn bộ chuỗi, một phần chuỗi, tăng và giảm số nguyên và số dấu phẩy động.
– DANH SÁCH: Danh sách là danh sách các chuỗi, được sắp xếp theo thứ tự chèn. Redis có thể thêm các phần tử vào đầu hoặc cuối danh sách. Danh sách rất tốt cho các bài toán yêu cầu thao tác các phần tử ở gần đầu và cuối, bởi vì việc truy cập này rất nhanh, ngay cả khi chèn hàng triệu phần tử. Tuy nhiên, nhược điểm là việc truy cập các phần tử ở giữa danh sách rất chậm.
– SET: Tập hợp các chuỗi (chưa sắp xếp). Redis hỗ trợ các thao tác thêm, đọc và xóa từng phần tử, kiểm tra sự xuất hiện của một phần tử trong tập hợp. Ngoài ra, Redis cũng hỗ trợ các hoạt động thiết lập, bao gồm giao/hợp/khác biệt.
– HASH: Bảng băm lưu trữ các cặp khóa-giá trị, trong đó các khóa được sắp xếp ngẫu nhiên và không có thứ tự nào cả. Redis hỗ trợ thêm, đọc, xóa các phần tử đơn lẻ và đọc tất cả các giá trị.
– SORTED SET (ZSET) : là một danh sách trong đó mỗi phần tử là một chuỗi (thành viên) và một float (điểm) Bản đồ của , danh sách được sắp xếp theo điểm số này. Các phần tử của zset được sắp xếp theo số điểm từ nhỏ đến lớn.
Ngoài ra Redis còn hỗ trợ các kiểu dữ liệu khác như: Bit array, HyperLogLogs, Streams. Để cài đặt, hãy tham khảo tài liệu Redis.
Để quản lý Redis bằng giao diện web, bạn có thể sử dụng công cụ phpRedisAdmin: https://github.com/erikdubbelboer/phpRedisAdmin để quản lý cơ sở dữ liệu.
Redis liên tục là gì
Ngoài việc lưu trữ key-value trong RAM, Redis còn có 2 luồng nền, chuyên thực hiện các tác vụ, ghi định kỳ
Có hai loại tệp được ghi vào đĩa cứng:
RDB (tệp cơ sở dữ liệu Redis)
Mỗi RDB Tạo ảnh chụp nhanh của DB theo định kỳ và sao lưu nó vào đĩa cứng.
Ưu điểm
RDB cho phép người dùng lưu các phiên bản khác nhau của DB, rất tiện lợi khi có sự cố.
Bằng cách lưu trữ dữ liệu trong một tệp cố định, người dùng có thể dễ dàng chuyển dữ liệu đến các địa điểm, trung tâm dữ liệu và máy chủ khác nhau.
RDB giúp tối ưu hóa hiệu suất của Redis.Quy trình chính của Redis sẽ chỉ thực hiện công việc trên RAM, bao gồm các hoạt động cơ bản mà máy khách yêu cầu, chẳng hạn như thêm/đọc/xóa, trong khi các quy trình con sẽ chịu trách nhiệm cho các hoạt động I/O của đĩa. . Tổ chức này giúp tối đa hóa hiệu suất của Redis.
Khi khởi động lại máy chủ, sử dụng RDB để xử lý lượng dữ liệu lớn sẽ có tốc độ cao hơn so với sử dụng AOF.
Nhược điểm
Nếu bạn muốn giảm thiểu rủi ro mất dữ liệu, RDB không phải là một lựa chọn tốt.
Thông thường, người dùng sẽ thiết lập để tạo ảnh chụp nhanh RDB sau mỗi 5 phút (hoặc hơn). Vì vậy, nếu xảy ra sự cố, Redis sẽ không hoạt động và dữ liệu vào phút cuối sẽ bị mất.
RDB cần sử dụng fork() để tạo một tiến trình con cho hoạt động I/O của đĩa. Nếu dữ liệu quá lớn, quá trình fork() có thể tốn nhiều thời gian và máy chủ sẽ không phản hồi yêu cầu của máy khách trong vòng mili giây hoặc thậm chí 1 giây, tùy thuộc vào lượng dữ liệu và hiệu suất của CPU.
AOF(Append Only File)
AOF lưu tất cả các thao tác ghi mà máy chủ nhận được, các thao tác này sẽ được đặt lại khi máy chủ khởi động lại hoặc đặt lại Chạy lại
Ưu điểm
Sử dụng AOF sẽ giúp đảm bảo tập dữ liệu mạnh mẽ hơn so với sử dụng RDB. Người dùng có thể định cấu hình Redis để ghi lại mỗi truy vấn hoặc mỗi giây.
Redis ghi lại AOF bằng cách thêm vào phần cuối của các tệp hiện có, vì vậy quá trình tìm kiếm các tệp hiện có bằng không. cần thiết. Ngoài ra, ngay cả khi chỉ một nửa số lệnh được ghi trong tệp nhật ký (có thể do ổ đầy), Redis vẫn có các cơ chế như vậy để quản lý và sửa chữa (redis-check-aof).
Redis cung cấp quy trình nền cho phép ghi tệp AOF khi tệp quá lớn.
Trong khi máy chủ vẫn đang xử lý tệp cũ, một tệp mới sẽ được tạo với số thao tác nhỏ nhất để tạo tập dữ liệu hiện tại. Và khi một tệp mới được ghi, Redis sẽ chuyển sang ghi nhật ký tệp mới.
Nhược điểm
Các tệp AOF thường lớn hơn
AOF có thể chậm hơn các tệp RDB với cùng một tập dữ liệu, Nó phụ thuộc vào cách đặt khoảng thời gian sao lưu vào ổ cứng. Tuy nhiên, nếu nó được đặt để ghi nhật ký 1 giây một lần, thì nó có thể đạt được hiệu suất tương tự như RDB.
Các nhà phát triển Redis gặp phải một lỗi AOF (mặc dù hiếm gặp), đây là một lỗi AOF. Không thể xây dựng lại tập dữ liệu một cách chính xác khi khởi động lại Redis. Chưa bao giờ gặp lỗi này khi sử dụng RDB.
Kết luận Redis là gì?
Redis là sự lựa chọn tuyệt vời khi bạn cần một máy chủ lưu trữ dữ liệu cần có khả năng mở rộng cao (scaleable) và được sử dụng bởi nhiều tiến trình, nhiều ứng dụng, chia sẻ cho nhiều người máy chủ khác nhau.
Bạn có thể muốn xem thêm:
- Sử dụng bộ nhớ đệm phía máy chủ của Go
- Tuyệt vời: Sử dụng bộ nhớ đệm để tăng tốc Hệ thống
- Định cấu hình bộ đệm Redis để tăng tốc trang web WordPress của bạn
Xem thêm các công việc được trả lương cao tại TopDev
.