Redis 6.0 穩定版發佈,正式支持多線程

近期Redis 6.0.0穩定版發佈了,是Redis有史以來最大的版本, Redis的作者在博客中介紹了該版本中的新特性,此外除了這些新特性外,Redis 6也正式支持多線程!意味着從此不能單純的說Redis是單線程模型了。本文我們先來看看Redis 6.0.0 GA版本都有哪些新特性,然後介紹下Redis對多線程的支持。

Redis 6.0 穩定版特性一覽

那麼,從RC1到今天,除了穩定之外,還有什麼變化呢?

1、重新設計了客戶端緩存,特別是放棄了caching slot,而只使用key names。

2、現在Redis支持這樣一種模式:如果用於複製的RDB文件不再有用,它將立即刪除。在某些環境中,最好不要將數據放在磁盤上,而只放在內存中。

3、acl在特點方面變得更好。首先,有一個新的ACL日誌命令,它允許查看所有違反ACL的客戶機、訪問不應該訪問的命令、訪問不應該訪問的密鑰,或者驗證嘗試失敗。日誌實際上在內存中,因此每個外部代理都可以調用“ACL log”來查看發生了什麼。這對於調試ACL問題非常有用。

4、改進了複製協議PSYNC2。Redis能夠更頻繁地部分重新同步,使副本和主副本找到公共偏移。

5、帶有超時的Redis命令現在不僅BLPOP並且以前可以接受秒的命令現在可以接受十進制數。

6、RDB文件現在加載速度更快。根據文件的實際組成(較大或較小的值),可以預期20/30%的改進。當有很多客戶機連接時,信息也更快了,這是一個老問題,現在終於解決了。

7、我們有一個新命令STRALGO,它實現了複雜的字符串算法。目前唯一實現的是LCS(longest common subsequence),這是一種重要的算法,用於比較冠狀病毒的RNA(以及其他生物體的DNA和RNA)。

Redis 6.0 開始支持多線程

之前Redis的作者 Salvatore 就在 RedisConf 2019 分享過,其中一段展示了 Redis 6 引入的多線程 IO 特性對性能提升至少是一倍以上。

目前對於單線程 Redis 來說,性能瓶頸主要在於網絡的 IO 消耗, 優化主要有兩個方向:

  1. 提高網絡 IO 性能,典型的實現像使用 DPDK 來替代內核網絡棧的方式

  2. 使用多線程充分利用多核,典型的實現像 Memcached

因此,從Redis 6.0 RC1起,Redis提供了可選的多線程模型,以此來滿足不同用戶的需求。社區對比了 Redis 多線程和單線程的 SET 和 GET 性能,表現如下:

以上就是Redis 6.0.0的新特性及多線程IO支持方面的介紹。雖然Redis 6 GA版本是Redis有史以來最大的一個版本,它也是穩定的,但Redis作者也坦言要謹慎使用,在投入生產之前要做必要的工作負載測試。社區也將準備儘快發佈Redis6.0.1。

點擊左下方閱讀原文查看英文官宣 Redis 6.0.0 GA is out!

往期推薦  點擊標題可跳轉

1、HBase實踐 | HBase IO優化與高可用建設

2、MapReduce Shuffle 和 Spark Shuffle 結業篇

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章