Redis 7.0 資料庫管理系統發布

Redis 7.0 DBMS 已經發布,屬於 NoSQL 系統類別。 Redis 提供儲存鍵/值資料的功能,並透過對列表、雜湊和集合等結構化資料格式的支援以及在 Lua 中運行伺服器端腳本處理程序的能力來增強。 專案代碼是在 BSD 許可證下提供的。 自 2019 年以來,為企業用戶提供高級功能的其他模組(例如 RediSearch、RedisGraph、RedisJSON、RedisML、RedisBloom)已在專有 RSAL 授權下提供。 最近停滯不前的 GoodFORM 專案試圖在 AGPLv3 許可下繼續開發這些模組的開放版本。

與Memcached等記憶體儲存系統不同,Redis確保資料持久儲存在磁碟上,並確保資料庫在崩潰時保持完整。 該專案的源代碼在 BSD 許可證下分發。 客戶端程式庫適用於大多數流行語言,包括 Perl、Python、PHP、Java、Ruby 和 Tcl。 Redis支援事務,它允許你一步執行一組命令,保證一組給定命令執行過程中的一致性和一致性(來自其他請求的命令不能幹擾),並且在出現問題時,允許你回滾變化。 所有資料都完全快取在 RAM 中。

為資料管理提供了遞增/遞減、標準清單和集合操作(​​並集、交集)、鍵重命名、多重選擇和排序功能等命令。 支援兩種儲存模式:定期將資料同步到磁碟以及在磁碟上維護變更日誌。 在第二種情況下,確保所有更改的完全安全。 可以將主從資料複製組織到多個伺服器,以非阻塞模式進行。 也可以使用「發布/訂閱」訊息傳遞模式,在該模式中建立通道,透過訂閱將訊息分發給客戶端。

Redis 7.0 的主要變化:

  • 新增了對伺服器端功能的支援。 與先前支援的 Lua 語言腳本不同,這些函數不依賴應用程序,而是旨在實現擴展伺服器功能的附加邏輯。 函數的處理與資料密不可分,並且與資料庫相關,而不是與應用程式相關,包括複製和儲存在持久性儲存中。
  • 已經提出了 ACL 的第二版,它允許您根據密鑰控制對資料的訪問​​,並允許您定義不同的訪問命令規則集,並能夠將多個選擇器(權限集)綁定到每個使用者。 每個密鑰都可以用特定的權限來標識,例如,您可以限制只能讀取或寫入密鑰的某個子集的存取權限。
  • 提供了在叢集中運行的發布-訂閱訊息分發範例的分區(分片)實現,其中訊息被發送到附加了訊息通道的特定節點,之後該訊息被重定向到所包含的其餘節點在碎片中。 客戶端可以透過訂閱通道來接收訊息,既可以連接到該部分的主節點,也可以連接到輔助節點。 使用 SSUBSCRIBE、SUNSUBSCRIBE 和 SPUBLISH 指令執行控制。
  • 新增了對大多數上下文中處理子命令的支援。
  • 新增了新指令:
    • ZMPOP,BZMPOP。
    • LMPOP,BLMPOP。
    • 辛特卡、ZINTER卡。
    • 發布、訂閱、取消訂閱、PUBSUB ShardChannels/SHARDNUMSUB。
    • 過期時間,過期時間。
    • EVAL_RO、EVALSHA_RO、SORT_RO。
    • 函數 *、FCALL、FCALL_RO。
    • 命令文檔、命令列表。
    • 延遲直方圖。
    • 叢集碎片、叢集連結、叢集 DELSLOTSRANGE、叢集 ADDSLOTSRANGE。
    • 客戶不可驅逐。
    • ACL 試運行。
  • 提供了在一個 CONFIG SET/GET 呼叫中一次處理多個配置的能力。
  • 選項「-json」、「-2」、「-scan」、「-functions-rdb」已新增至 redis-cli 公用程式。
  • 預設情況下,停用客戶端對影響安全性的設定和命令的存取(例如,停用 DEBUG 和 MODULE 命令,禁止使用 PROTECTED_CONFIG 標誌變更配置)。 Redis-cli 不再將包含敏感資料的指令輸出到歷史檔案。
  • 引入的大部分優化旨在提高效能和減少記憶體消耗。 例如,啟用叢集模式、執行寫入時複製操作以及使用哈希和 zset 鍵時,記憶體消耗顯著減少。 改進了將資料刷新到磁碟的邏輯(fsync 呼叫)。 向客戶端發送回應時的網路資料包和系統呼叫的數量已減少。 複製效率提高了。
  • Lua腳本執行環境中的漏洞CVE-2022-24735已被修復,該漏洞允許您替換自己的Lua程式碼並在其他使用者(包括更高權限的使用者)的上下文中實現其執行。
  • 修正了漏洞 CVE-2022-24736,該漏洞允許 redis-server 進程因 NULL 指標取消引用而崩潰。 該攻擊是透過載入專門設計的Lua腳本來進行的。

來源: opennet.ru

添加評論