Tair (Redis OSS-compatible)與開源Redis相同,支援String、List、Hash、Set、Sorted Set、Stream等資料類型,能夠滿足大部分情境下的開發需求,但無法直接滿足一些複雜情境的業務需求,需要通過開發大量代碼、使用Lua指令碼等複雜的方式實現。Tair(企業版)整合了多個自研的資料結構,包括exString(包含Redis String命令增強)、exHash、exZset、GIS、Bloom、Doc、TS、Cpc、Roaring、Search和Vector,從多方面擴充Redis的適用性,降低複雜情境下業務的開發難度,同時可以協助您精簡大量代碼並提高業務整體效能,使您專註於業務創新。
Tair擴充資料結構與Redis Stack模組(Modules)
如下為Tair整合的資料結構,以及與Redis Stack Server的功能對比。
類型 | Tair擴充資料結構 | Redis Stack Server(對比項) | 說明 |
String增強 | 無 |
| |
Hash增強 | 無 | TairHash支援為field設定到期時間和版本,提高了Hash資料結構的靈活性,簡化了很多情境下的業務開發工作。該資料結構已開源,更多資訊請參見TairHash。 最佳實務:基於TairHash實現使用者多裝置登入管理。 | |
Zset增強 | 無 | TairZset可實現256個維度double類型的分值排序,提供普通熱門排行榜和多維熱門排行榜的能力。該資料結構已開源,更多資訊請參見TairZset。 | |
GeoSpatial | 無 | TairGIS是一種使用R-Tree做索引,支援地理資訊系統GIS(Geographic Information System)相關介面的資料結構。支援點、線、面的查詢,支援包含、被包含、相交等多種關係判斷。該資料結構已開源,更多資訊請參見TairGIS。 | |
Doc(JSON) | RedisJSON | TairDoc是一種文件類型的資料結構,支援JSON標準,類似RedisJSON模組。同時,TairDoc資料以二進位樹的方式儲存,支援對JSON中子項目進行快速存取。 | |
Search | RediSearch | TairSearch提供類似Elasticsearch(ES-LIKE)的文法,提供種類更多、效果更準確的分詞器,查詢效能更佳。 | |
TimeSeries | RedisTimeSeries | TairTS相比較RedisTimeSeries具備更強的標籤(Tag)擴充能力,支援Skey(Tag)的兩級Hash結構時間軸,支援對Skey(Tag)進行二級時間軸彙總查詢,支援對歷史時序資料的更新或累加等。 最佳實務:基於TairTS實現秒級監控。 | |
Sketches | RedisBloom | TairBloom相容RedisBloom,支援動態擴容,同時通過64位的Hash演算法降低Hash碰撞率,顯著降低巨量資料的衝撞率。 最佳實務:推薦系統、爬蟲系統,更多資訊請參見Bloom、使用Bloom Filter高效管理遊戲活動推送。 | |
無 | TairCpc是基於CPC(Compressed Probability Counting)壓縮演算法開發的資料結構,支援僅佔用很小的記憶體空間對採樣資料進行高效能運算,支援滾動視窗和滑動視窗,可以更好地支援流式運算,支援巨量資料分析中常用的彙總運算元,如: | ||
Bitmap | 無 | TairRoaring提供高效的計算模組和極高的穩定性,支援多位元影像運算能力,提升了效能和空間效率。 最佳實務:基於TairRoaring實現人群圈選方案。 | |
向量檢索 | Redis Search (Vector Similarity) | TairVector是Tair自研的擴充資料結構,提供高效能、即時,集儲存、檢索於一體的向量資料庫服務。 最佳實務: |
Tair企業版用戶端
為協助您更方便地使用Tair擴充資料結構,雲資料庫 Tair(相容 Redis)在部分Redis用戶端的基礎上開發了Tair用戶端,您可以通過Tair用戶端直接調用Tair擴充資料結構。
您可以在GitHub中擷取下述用戶端,同時您也可以參考其中的樣本(examples)代碼。
Tair用戶端 | 語言 | 說明 |
Java | TairJedis是基於Jedis開發的Tair用戶端。 | |
.NET | AlibabaCloud.TairSDK是基於.NET Core 5.0和StackExchange.Redis2.5.61開發的Tair用戶端。 | |
Go | Tair-go是基於go-redis開發的Tair用戶端。 | |
Python | Tair-py是基於redis-py開發的Tair用戶端。 |
常見問題
Q:Tair (Redis OSS-compatible)是否支援Redis stack server?
A:由於Redis開源協議限制,阿里雲Redis開源版、Tair(企業版)均不支援Redis stack server。
為解決該問題,Tair(企業版)推出自研的擴充資料結構,包括exString(包含Redis String命令增強)、exHash、exZset、GIS、Bloom、Doc、TS、Cpc、Roaring、Search和Vector,整體比Redis stack server支援更多的資料結構,而部分資料結構在效能上也優於Redis stack server。
Q:如何對Tair擴充資料結構設定到期時間(TTL)?
A:其中exString、exHash、Cpc可通過自身命令直接設定TTL,而其他Tair擴充資料結構均可以通過
EXPIRE | EXPIREAT <Keyname>命令(例如EXPIRE foo 60),設定該Key的到期時間。