全部產品
Search
文件中心

Tair:記憶體型

更新時間:Jul 24, 2024

雲原生記憶體資料庫Tair記憶體型(簡稱記憶體型)適合并發量大、讀寫熱點多、高效能情境,記憶體型重點增強了多線程效能並整合多個自研擴充資料結構。

購買方式

建立執行個體

主要優勢

類別

說明

相容性

  • 100%相容原生Redis,無需修改業務代碼,提供相容Redis 7.0相容Redis 6.0相容Redis 5.0版本。

效能

  • 採用多執行緒模式,效能約為同規格社區版執行個體的3倍,能夠突破熱點資料高頻讀寫受到的效能限制。

  • 相比原生Redis,高QPS情境下回應時間更低,效能表現更佳。

  • 在大並發情境下運行穩定,可以極大地緩解突發大量請求導致的串連問題,從容應對業務高峰。

  • 全量同步和增量同步處理在IO線程中進行,提高同步速度。

部署架構

  • 支援標準、叢集和讀寫分離部署架構。

資料結構模組整合

企業級特性

資料安全

適用情境

適用於ApsaraVideo for Live、電商秒殺和線上教育等情境,下面列舉了記憶體型在4個典型情境中的應用。

  • 情境1:使用Redis社區版執行個體在秒殺情境中構建緩衝,部分熱點Key的QPS要求高達20萬以上,無法滿足業務高峰期的需求。

    採用記憶體型(標準架構)執行個體後,熱門商品秒殺過程流暢,未發生效能問題。

  • 情境2:在業務中使用Redis社區版叢集執行個體,但在使用事務和Lua指令碼功能時有一定的限制。

    採用記憶體型執行個體後,在滿足效能需求的同時消除了叢集版的命令使用限制。

  • 情境3:自建有一主多備的Redis服務,隨著業務中訪問量的不斷提高,備節點數量也要隨之增加,管理維護成本越來越高。

    採用具備一個資料節點五個唯讀副本的記憶體型(讀寫分離架構)執行個體後,可以輕鬆應對百萬級QPS的業務挑戰。

  • 情境4:自建有Redis叢集來承擔線上千萬級QPS的業務壓力。隨著業務的發展,Redis分區數不斷增加,管理維護成本居高不下。

    採用記憶體型(叢集架構)執行個體後,叢集規模縮到原來的三分之一,管理維護成本大幅降低。

執行緒模式對比

線程架構

說明

圖 1. Redis單執行緒模式標準效能Redis執行個體的單執行緒模式

Redis社區版和原生Redis採用單執行緒模式,資料處理流程為:讀取請求,解析請求,處理資料,發送響應。其中網路IO和請求解析佔用了大部分的資源。

圖 2. Tair多執行緒模式增強效能Redis執行個體的多執行緒模式

Tair記憶體型將服務各階段的任務進行分離,通過分工明確的多個線程平行處理各階段任務,達到提高效能的目的。

  • IO線程:負責請求讀取、響應發送、命令解析等。

  • Worker線程:負責命令處理、定時器事件等。

  • 輔助線程:負責高可用探測、保活等。

IO線程讀取使用者的請求並進行解析,之後將解析結果以命令的形式放在隊列中發送給Worker線程處理。Worker線程將命令處理完成後產生響應,通過另一條隊列發送給IO線程。

Tair記憶體型最多支援4個IO線程並發運行。為了提高線程的並行度,IO線程和Worker線程之間採用無鎖隊列和管道進行資料交換。

說明
  • 對於通用的類型,例如:String、List、Set、Hash、Zset、 Hyperloglog、Geo以及擴充結構都有很好的加速效果。

  • 對於Pub、Sub、Blocking系列API,由於其複製是在worker中完成的,可被加速提升吞吐,效能提升約50%。

  • 由於Transaction、Lua script要求串列執行,無加速效果。

說明

區別於Redis社區版6.0的多線程(效能至多提升2倍,且CPU資源消耗高),記憶體型的Real Multi-IO能夠將IO加速地更徹底,具備更高的抗串連衝擊性,且可以線性地提升吞吐能力。

效能對比

ApsaraDB for Redis執行個體採用與原生Redis相同的單執行緒模式,每個資料節點支援8萬到10萬的QPS;Tair記憶體型採用多執行緒模式,由IO線程、Worker線程和輔助線程共同完成資料處理,單節點效能為ApsaraDB for Redis執行個體的3倍左右。下表展示了不同架構下,ApsaraDB for Redis和Tair記憶體型執行個體的適用情境對比。

架構

ApsaraDB for Redis

Tair記憶體型

標準架構

不適用於單節點QPS要求超過10萬的情境。

可應用於QPS高於10萬的情境。

叢集架構

包含多個資料節點,每個節點的效能與標準版執行個體相似。當某個節點儲存了熱度較高的資料並面臨大並發量的請求時,該節點中其它資料的讀寫可能受到影響,形成效能瓶頸。

能更好地應對熱讀寫,降低維護成本。

讀寫分離架構

有較高的讀效能,在讀多寫少的情境表現良好,但不適用於大並發寫入的情境。

既有較高的讀效能,又能承受大並發寫入,適用於寫請求多而讀請求更多的情境。

資料結構模組整合

記憶體型整合多個自研的資料模組,包括exString(包含Redis String命令增強)、exHashexZsetGISBloomDocTSCpcRoaringSearchVector,擴充了適用性,同時降低了複雜情境下業務的開發難度,讓您專註於業務創新。

說明
  • 記憶體型(相容Redis 7.0、6.0)相容所有資料結構。

  • 記憶體型(相容Redis 5.0)相容除TairVector以外的所有資料結構。

類型

Tair擴充資料結構

Redis Stack Server(對比項)

說明

String增強

  • TairString是一種帶版本號碼的string類型資料結構,同時還在Redis String加減功能的基礎上支援了邊界設定,可以將INCRBY、INCRBYFLOAT的結果限制在一定的範圍內,超出範圍則提示錯誤。該資料結構已開源,更多資訊請參見TairString

  • CAS和CAD命令可實現簡潔高效的高效能分布式鎖

最佳實務:基於TairString實現高效能樂觀鎖基於TairString實現高效限流器

Hash增強

exHash

TairHash支援為field設定到期時間和版本,提高了Hash資料結構的靈活性,簡化了很多情境下的業務開發工作。該資料結構已開源,更多資訊請參見TairHash

最佳實務:基於TairHash實現使用者多裝置登入管理

Zset增強

exZset

TairZset可實現256個維度double類型的分值排序,提供普通熱門排行榜和多維熱門排行榜的能力。該資料結構已開源,更多資訊請參見TairZset

最佳實務:基於TairZset輕鬆實現多維熱門排行榜基於TairZset實現分布式架構熱門排行榜

GeoSpatial

GIS

TairGIS是一種使用R-Tree做索引,支援地理資訊系統GIS(Geographic Information System)相關介面的資料結構。支援點、線、面的查詢,支援包含、被包含、相交等多種關係判斷。該資料結構已開源,更多資訊請參見TairGIS

最佳實務:基於TairGIS實現電子圍欄基於TairGIS實現同城購業務

Doc(JSON)

Doc

RedisJSON

TairDoc是一種文件類型的資料結構,支援JSON標準,類似RedisJSON模組。同時,TairDoc資料以二進位樹的方式儲存,支援對JSON中子項目進行快速存取。

Search

Search

RediSearch

TairSearch提供類似Elasticsearch(ES-LIKE)的文法,提供種類更多、效果更準確的分詞器,查詢效能更佳。

TimeSeries

TS

RedisTimeSeries

TairTS相比較RedisTimeSeries具備更強的標籤(Tag)擴充能力,支援Skey(Tag)的兩級Hash結構時間軸,支援對Skey(Tag)進行二級時間軸彙總查詢,支援對歷史時序資料的更新或累加等。

最佳實務:基於TairTS實現秒級監控

Sketches

Bloom

RedisBloom

TairBloom相容RedisBloom,支援動態擴容,同時通過64位的Hash演算法降低Hash碰撞率,顯著降低巨量資料的衝撞率。

最佳實務:推薦系統、爬蟲系統,更多資訊請參見Bloom

Cpc

TairCpc是基於CPC(Compressed Probability Counting)壓縮演算法開發的資料結構,支援僅佔用很小的記憶體空間對採樣資料進行高效能運算,支援滾動視窗和滑動視窗,可以更好地支援流式運算,支援巨量資料分析中常用的彙總運算元,如:DISTINCTCOUNTMAXMINFIRSTLASTSQUARED等。

Bitmap

Roaring

TairRoaring提供高效的計算模組和極高的穩定性,支援多位元影像運算能力,提升了效能和空間效率。

最佳實務:基於TairRoaring實現人群圈選方案

向量檢索

Vector

Redis Search (Vector Similarity)

TairVector是Tair自研的擴充資料結構,提供高效能、即時,集儲存、檢索於一體的向量資料庫服務。

最佳實務:

企業級特性

企業級特性

說明

通過資料閃回按時間點恢複資料

開啟Tair的資料閃回功能後,Tair最長可將AOF備份資料保留7天,在此期間您隨時可以指定一個精確到秒的時間點,系統會基於所選時間點的備份資料建立一個新的執行個體,實現精確的資料恢複。

代理查詢快取

開啟代理查詢快取功能(Proxy Query Cache)後,代理節點會緩衝熱點Key對應的請求和返回資訊,當在有效時間內收到同樣的請求時直接返回結果至用戶端,無需和後端的資料分區互動。

全球多活

Tair全球多活是雲端式資料庫Redis自研的多活資料庫系統,可輕鬆實現異地多個網站同時對外提供服務的業務情境,助力企業快速複製阿里巴巴異地多活架構。

Tair執行個體雙向同步

通過Data Transmission Service(Data Transmission Service)實現Tair執行個體間的雙向資料同步,可應用於異地多活、資料容災等多種情境。

常見問題

Q:用戶端不支援新模組的命令怎麼辦?

A:您可以先在應用代碼中定義需要使用的新模組命令,然後再使用這些命令,或者通過Tair用戶端直接調用Tair擴充資料結構,更多資訊,請參見Tair Clients