Tair內存型(簡稱內存型)適合并發量大、讀寫熱點多,對性能要求超過Redis開源版實例的場景。相比Redis開源版,內存型重點增強了多線程性能并集成多個自研擴展數據結構。
購買方式
更多信息請參見步驟1:創建實例。
主要優勢
類別 | 說明 |
兼容性 |
|
性能 |
|
部署架構 |
|
數據結構模塊集成 | |
企業級特性 |
|
數據安全 |
|
適用場景
適用于視頻直播、電商秒殺和在線教育等場景,下面列舉了內存型在4個典型場景中的應用。
場景1:使用Redis開源版實例在秒殺場景中構建緩存,部分熱點Key的QPS要求高達20萬以上,無法滿足業務高峰期的需求。
采用內存型(標準架構)實例后,熱門商品秒殺過程流暢,未發生性能問題。
場景2:在業務中使用Redis開源版集群實例,但在使用事務和Lua腳本功能時有一定的限制。
采用內存型實例后,在滿足性能需求的同時消除了集群版的命令使用限制。
場景3:自建有一主多備的Redis服務,隨著業務中訪問量的不斷提高,備節點數量也要隨之增加,管理維護成本越來越高。
采用具備一個數據節點五個只讀副本的內存型(讀寫分離架構)實例后,可以輕松應對百萬級QPS的業務挑戰。
場景4:自建有Redis集群來承擔線上千萬級QPS的業務壓力。隨著業務的發展,Redis分片數不斷增加,管理維護成本居高不下。
采用內存型(集群架構)實例后,集群規??s到原來的三分之一,管理維護成本大幅降低。
線程模型對比
線程架構 | 說明 |
Redis開源版和原生Redis采用單線程模型,數據處理流程為:讀取請求,解析請求,處理數據,發送響應。其中網絡IO和請求解析占用了大部分的資源。 | |
Tair內存型將服務各階段的任務進行分離,通過分工明確的多個線程并行處理各階段任務,達到提高性能的目的。
IO線程讀取用戶的請求并進行解析,之后將解析結果以命令的形式放在隊列中發送給Worker線程處理。Worker線程將命令處理完成后生成響應,通過另一條隊列發送給IO線程。 Tair內存型最多支持4個IO線程并發運行。為了提高線程的并行度,IO線程和Worker線程之間采用無鎖隊列和管道進行數據交換。 說明
|
區別于Redis 6.0的多線程(性能至多提升2倍,且CPU資源消耗高),內存型的Real Multi-IO能夠將IO加速地更徹底,具備更高的抗連接沖擊性,且可以線性地提升吞吐能力。
性能對比
Redis開源版實例采用與原生Redis相同的單線程模型,每個數據節點支持8萬到10萬的QPS;Tair內存型采用多線程模型,由IO線程、Worker線程和輔助線程共同完成數據處理,單節點性能為Redis開源版實例的3倍左右。下表展示了不同架構下,Redis開源版和Tair內存型實例的適用場景對比。
架構 | Redis開源版 | Tair內存型 |
標準架構 | 不適用于單節點QPS要求超過10萬的場景。 | 可應用于QPS高于10萬的場景。 |
集群架構 | 包含多個數據節點,每個節點的性能與標準版實例相似。當某個節點儲存了熱度較高的數據并面臨大并發量的請求時,該節點中其它數據的讀寫可能受到影響,形成性能瓶頸。 | 能更好地應對熱讀寫,降低維護成本。 |
讀寫分離架構 | 有較高的讀性能,在讀多寫少的場景表現良好,但不適用于大并發寫入的場景。 | 既有較高的讀性能,又能承受大并發寫入,適用于寫請求多而讀請求更多的場景。 |
數據結構模塊集成
Redis開源版與開源Redis相同,支持String、List、Hash、Set、Sorted Set、Stream等數據類型,能夠滿足大部分場景下的開發需求,但在一些復雜場景中,原生數據類型無法直接滿足某些業務需求,只能使用通過調整應用數據、使用Lua腳本等方式來實現。
內存型集成多個自研的Tair模塊,包括exString(包含Redis String命令增強)、exHash、exZset、GIS、Bloom、Doc、TS、Cpc、Roaring、Search和Vector,擴展了Tair的適用性,同時降低了復雜場景下業務的開發難度,讓您專注于業務創新。
企業級特性
企業級特性 | 說明 |
開啟Tair的數據閃回功能后,Tair最長可將AOF備份數據保留7天,在此期間您隨時可以指定一個精確到秒的時間點,系統會基于所選時間點的備份數據創建一個新的實例,實現精確的數據恢復。 | |
開啟代理查詢緩存功能(Proxy Query Cache)后,代理節點會緩存熱點Key對應的請求和返回信息,當在有效時間內收到同樣的請求時直接返回結果至客戶端,無需和后端的數據分片交互。更多信息,請參見通過Proxy Query Cache優化熱點Key問題。 | |
Tair全球多活是基于Redis開源版自研的多活數據庫系統,可輕松實現異地多個站點同時對外提供服務的業務場景,助力企業快速復制阿里巴巴異地多活架構。 | |
借助DTS實現雙向數據同步 | 通過數據傳輸服務DTS(Data Transmission Service)實現Tair實例間的雙向數據同步,可應用于異地多活、數據容災等多種場景,詳情請參見Tair實例間的雙向同步。 |
常見問題
Q:客戶端不支持新模塊的命令怎么辦?
A:您可以先在應用代碼中定義需要使用的新模塊命令,然后再使用這些命令,或者通過Tair客戶端直接調用Tair擴展數據結構,更多信息,請參見Clients說明。