全部產品
Search
文件中心

ApsaraDB for Redis:基於TairRoaring實現人群圈選方案

更新時間:Jul 03, 2024

您可以通過雲原生記憶體資料庫Tair的TairRoaring資料結構快速搭建高效能的目標使用者篩選服務。

TairRoaring簡介

使用者標籤篩選情境往往應用於個人化推薦、精準營銷等具體業務情境,通過不同的標籤輔以不同的營運營銷,從而實現資源投放方的商業利益最大化。

該類業務通常具備如下特點:

  • 使用者標籤極多,需要較高的儲存空間及良好的擴充能力。

  • 使用者規模大,需按照眾多維度添加標籤,資料分布較為離散。

  • 計算量大,應用會根據不同策略需選取不同標籤的使用者,且對效能、即時性均有較高要求。

Bitmap(又名Bitset)資料結構可以較好地實現以上需求,使用少量的儲存空間來實現海量資料的查詢最佳化。Redis社區版支援Bitmap運算,但是原生Bitmap往往難以應付超大規模的人群打標問題:

  • 原生Bitmap受限於keyspace的大小,對於稀疏情境會出現空間效率急劇降低的情況。

  • 使用string進行Bitmap操作時,很多計算邏輯需要上傳到使用者代碼邏輯中執行,一來一回增加了3次額外的RTT(Round-Trip Time,往返時延)。

  • 原生Redis儲存Bitmap時極易產生大key,會對叢集穩定性帶來極大的挑戰。

Roaring屬於高度工程最佳化的Bitmap實現:

  • 通過2層索引和多種動態容器(Container),平衡了多種情境下效能和空間效率。

  • 使用了包括SIMD instructions、Vectorization、PopCnt演算法等多種工程最佳化,提升了計算效率,實現了高效的時空效率。

  • 基於Tair提供的強大計算效能和極高的穩定性,為使用者情境保駕護航。

相比較原生Bitmap,TairRoaring具有更低的記憶體佔用、更高的集合計算效率,同時依託Tair高效能,提供更低的延遲和更高的吞吐。

目標使用者篩選流程

人群篩選類業務往往包括模型的產生和篩選等多個步驟。

TairRoaring應用

  1. 使用者特徵的未經處理資料往往儲存在關係型資料庫中,通過行schema儲存使用者的不同維度特徵。

  2. 按需對未經處理資料進行處理,產生使用者UID到人群Tag資訊的映射關係。

  3. 定時更新(匯入)使用者UID到標籤資訊的映射關係到TairRoaring引擎中(一般為T+1,表示業務的第二天匯入前一天的資料)。

  4. 通過TairRoaring加速業務計算:

    • 查詢目標使用者與人群Tag的關係。

      例如,判斷使用者(user1)是否屬於人群Tag-A (編號 16161)。

      TR.GETBIT user1 16161
    • 通過ANDORDIFF等操作構造邏輯人群,並對邏輯人群資訊進行計算。

      例如,擷取同時屬於人群Tag-B和Tag-C的所有目標使用者。

      TR.BITOP result AND Tag-B Tag-C
    • 也存在部分從Tag資訊到使用者UID映射關係的情境,如風險控制情境等。

      例如,查詢使用者(user1)是否屬於某個人群Tag-A中。

      TR.GETBIT Tag-A user1