Phát hành Redis 7.0 DBMS

Bản phát hành Redis 7.0 DBMS, thuộc loại hệ thống NoSQL, đã được xuất bản. Redis cung cấp các chức năng lưu trữ dữ liệu khóa/giá trị, được tăng cường nhờ hỗ trợ các định dạng dữ liệu có cấu trúc như danh sách, hàm băm và bộ cũng như khả năng chạy trình xử lý tập lệnh phía máy chủ trong Lua. Mã dự án được cung cấp theo giấy phép BSD. Các mô-đun bổ sung cung cấp khả năng nâng cao cho người dùng doanh nghiệp, chẳng hạn như RediSearch, RedisGraph, RedisJSON, RedisML, RedisBloom, đã được cung cấp theo giấy phép RSAL độc quyền kể từ năm 2019. Dự án GoodFORM gần đây đã bị đình trệ, đã cố gắng tiếp tục phát triển các phiên bản mở của các mô-đun này theo giấy phép AGPLv3.

Không giống như các hệ thống lưu trữ trong bộ nhớ như Memcached, Redis đảm bảo rằng dữ liệu được lưu trữ liên tục trên đĩa và đảm bảo rằng cơ sở dữ liệu vẫn nguyên vẹn trong trường hợp xảy ra sự cố. Mã nguồn của dự án được phân phối theo giấy phép BSD. Thư viện máy khách có sẵn cho hầu hết các ngôn ngữ phổ biến, bao gồm Perl, Python, PHP, Java, Ruby và Tcl. Redis hỗ trợ các giao dịch, cho phép bạn thực thi một nhóm lệnh trong một bước, đảm bảo tính nhất quán và nhất quán (các lệnh từ các yêu cầu khác không thể can thiệp) trong quá trình thực thi một nhóm lệnh nhất định và trong trường hợp có sự cố, cho phép bạn quay lại những thay đổi. Tất cả dữ liệu được lưu trữ đầy đủ trong RAM.

Các lệnh như tăng/giảm, danh sách tiêu chuẩn và các thao tác tập hợp (kết hợp, giao nhau), đổi tên khóa, nhiều lựa chọn và chức năng sắp xếp được cung cấp để quản lý dữ liệu. Hai chế độ lưu trữ được hỗ trợ: đồng bộ hóa dữ liệu định kỳ vào đĩa và duy trì nhật ký thay đổi trên đĩa. Trong trường hợp thứ hai, sự an toàn hoàn toàn của tất cả các thay đổi được đảm bảo. Có thể tổ chức sao chép dữ liệu chủ-nô lệ đến một số máy chủ, được thực hiện ở chế độ không chặn. Chế độ nhắn tin “xuất bản/đăng ký” cũng có sẵn, trong đó một kênh được tạo, các tin nhắn từ đó được phân phối đến khách hàng bằng cách đăng ký.

Những thay đổi chính trong Redis 7.0:

  • Đã thêm hỗ trợ cho các chức năng phía máy chủ. Không giống như các tập lệnh được hỗ trợ trước đây bằng ngôn ngữ Lua, các chức năng không bị ràng buộc với ứng dụng và nhằm mục đích triển khai logic bổ sung nhằm mở rộng khả năng của máy chủ. Các chức năng được xử lý không thể tách rời với dữ liệu và liên quan đến cơ sở dữ liệu chứ không phải với ứng dụng, bao gồm cả việc được sao chép và lưu trữ trong bộ lưu trữ liên tục.
  • Phiên bản thứ hai của ACL đã được đề xuất, cho phép bạn kiểm soát quyền truy cập vào dữ liệu dựa trên các khóa và cho phép bạn xác định các bộ quy tắc khác nhau để truy cập các lệnh với khả năng liên kết một số bộ chọn (bộ quyền) cho mỗi người dùng. Mỗi khóa có thể được xác định bằng một cơ quan cụ thể, ví dụ: bạn có thể giới hạn quyền truy cập chỉ đọc hoặc ghi một tập hợp con khóa nhất định.
  • Việc triển khai được phân vùng (phân đoạn) của mô hình phân phối tin nhắn Xuất bản-Đăng ký chạy trong một cụm được cung cấp, trong đó tin nhắn được gửi đến một nút cụ thể mà kênh tin nhắn được đính kèm, sau đó tin nhắn này được chuyển hướng đến các nút còn lại được bao gồm trong mảnh vỡ. Khách hàng có thể nhận tin nhắn bằng cách đăng ký một kênh, cả bằng cách kết nối với nút chính và các nút phụ của phần. Việc điều khiển được thực hiện bằng các lệnh SSUBSCRIBE, SUNSUBSCRIBE và SPUBLISH.
  • Đã thêm hỗ trợ để xử lý các lệnh phụ trong hầu hết các ngữ cảnh.
  • Các lệnh mới được thêm vào:
    • ZMPOP, BZMPOP.
    • LMPOP, BLMPOP.
    • THẺ SINTERCARD, ZINTERCARD.
    • ĐĂNG NHẬP, ĐĂNG KÝ, SUNSUBSCRIBE, PUBSUB SHARDCHANNELS/SHARDNUMSUB.
    • THỜI GIAN HẾT HẠN, THỜI GIAN PEXPIRETIME.
    • EVAL_RO, EVALSHA_RO, SORT_RO.
    • CHỨC NĂNG *, FCALL, FCALL_RO.
    • TÀI LIỆU LỆNH, DANH SÁCH LỆNH.
    • BIỂU ĐỒ ĐỘ TRỄ.
    • CỤM PHẦN, LIÊN KẾT CỤM, CLUSTER DELSLOTSRANGE, CLUSTER ADDSLOTSRANGE.
    • KHÁCH HÀNG KHÔNG TRỤC XUẤT.
    • ACL KHÔ.
  • Khả năng xử lý nhiều cấu hình cùng một lúc trong một lệnh gọi CONFIG SET/GET đã được cung cấp.
  • Các tùy chọn “-json”, “-2”, “-scan”, “-functions-rdb” đã được thêm vào tiện ích redis-cli.
  • Theo mặc định, quyền truy cập của máy khách vào các cài đặt và lệnh ảnh hưởng đến bảo mật bị vô hiệu hóa (ví dụ: các lệnh DEBUG và MODULE bị vô hiệu hóa, việc thay đổi cấu hình bằng cờ PROTECTED_CONFIG bị cấm). Redis-cli không còn xuất các lệnh chứa dữ liệu nhạy cảm vào tệp lịch sử nữa.
  • Một phần lớn các tối ưu hóa đã được giới thiệu nhằm mục đích tăng hiệu suất và giảm mức tiêu thụ bộ nhớ. Ví dụ: mức tiêu thụ bộ nhớ đã giảm đáng kể khi bật chế độ cụm, khi thực hiện các thao tác sao chép khi ghi và khi làm việc với các phím băm và khóa zset. Cải thiện logic để xóa dữ liệu vào đĩa (cuộc gọi fsync). Số lượng gói mạng và cuộc gọi hệ thống khi gửi phản hồi tới máy khách đã giảm. Hiệu quả sao chép đã được cải thiện.
  • Lỗ hổng CVE-2022-24735 trong môi trường thực thi tập lệnh Lua đã được sửa, cho phép bạn thay thế mã Lua của riêng mình và thực thi mã đó trong bối cảnh của một người dùng khác, bao gồm cả người dùng có đặc quyền cao hơn.
  • Đã khắc phục lỗ hổng CVE-2022-24736, cho phép quá trình máy chủ redis gặp sự cố do vô hiệu hóa con trỏ NULL. Cuộc tấn công được thực hiện thông qua việc tải các tập lệnh Lua được thiết kế đặc biệt.

Nguồn: opennet.ru

Thêm một lời nhận xét