Redis高階特性
隨著Redis越來越火,除了基本提供的五種基本資料型別,也提供了其他資料結構和特性。另外,其獨特的Module載入機制也帶來了極大的可擴充套件性。
漏斗限流
在業務中我們可能對一些呼叫、執行進行限流。而redis就為我們提供了一種方式。
限流涉及的指標有
-
容量
-
流出速率
管道
管道不是Redis獨有的。本質上redis 客戶端通過對管道中的指令列表改變讀寫順序來節省IO。
伺服器依舊是收到一條訊息,執行一條訊息,回覆一條訊息。
Geo
我們知道,地球是一個球體,並對其進行了位置劃分,經度(-180, 180],緯度(-90, 90)。
Rax
Rax 是 Redis 內部比較特殊的一個資料結構,它是一個有序字典樹 (基數樹 Radix Tree),按照 key 的字典序排列,支援快速地定位、插入和刪除操作。Redis 五大基礎資料結 構裡面,能作為字典使用的有 hash 和 zset。hash 不具備排序功能,zset 則是按照 score 進 行排序的。rax 跟 zset 的不同在於它是按照 key 進行排序的
HyperLogLog
可用版本: >= 2.8.9 時間複雜度: 當命令作用於單個 HyperLogLog 時, 複雜度為 O(1) , 並且具有非常低的平均常數時間。 當命令作用於 N 個 HyperLogLog 時, 複雜度為 O(N) , 常數時間也比處理單個 HyperLogLog 時要大得多。 當 PFCOUNT key [key …] 命令作用於單個鍵時, 返回儲存在給定鍵的 HyperLogLog 的近似基數, 如果鍵不存在, 那麼返回 0 。
當 PFCOUNT key [key …] 命令作用於多個鍵時, 返回所有給定 HyperLogLog 的並集的近似基數, 這個近似基數是通過將所有給定 HyperLogLog 合併至一個臨時 HyperLogLog 來計算得出的。
通過 HyperLogLog 資料結構, 使用者可以使用少量固定大小的記憶體, 來儲存集合中的唯一元素 (每個 HyperLogLog 只需使用 12k 位元組記憶體,以及幾個位元組的記憶體來儲存鍵本身)。
命令返回的可見集合(observed set)基數並不是精確值, 而是一個帶有 0.81% 標準錯誤(standard error)的近似值。
Stream
我們知道,利用redis實現一個訊息佇列,比如:
1、採用list:一端 rpush/lpush 入隊,另一端lpop 和 rpop 出隊。不過它存在空閒連線的問題,伺服器自動會斷開空閒的連線。
2、使用 PUB/SUB,訂閱/釋出模式
3、利用 Sorted-Set 來實現,將時間戳作為 score。這樣也做訊息延遲。
不過上述方式均存在一個問題:訊息可靠性問題。三種方式在伺服器當機時,存在丟訊息的可能。
Stream是 Redis 5增加,訊息連結串列,持久化。
相關文章
- Redis 高階特性 Redis Stream使用Redis
- Redis基礎、高階特性與效能調優Redis
- Redis 基礎、高階特性與效能調優Redis
- Python 高階特性Python
- Mongodb高階特性MongoDB
- RocketMQ高階特性MQ
- mysql高階特性MySql
- 面試之 Redis 基礎、高階特性與效能調優面試Redis
- SpringIOC的高階特性Spring
- redis高階部分Redis
- Java高階特性—泛型Java泛型
- Java高階特性之集合Java
- MySQL 高階特性篇教程MySql
- RabbitMQ(二):RabbitMQ高階特性MQ
- JavaScript高階特性 — 作用域JavaScript
- Redis7高階Redis
- Redis 高階應用Redis
- 《Java 高階篇》八:新特性Java
- PoweJob高階特性-MapReduce完整示例
- Java高階特性增強-鎖Java
- redis學習——高階功能Redis
- Tomcat高階特性及效能調優Tomcat
- Python 高階特性(4)- 生成器Python
- MySQL高階特性——繫結變數MySql變數
- xmake高階特性之自定義選項
- 第32篇 .Net特性Attribute的高階使用
- 尚矽谷《MySQL高階特性篇》教程釋出MySql
- Go高階特性 16 | 非型別安全:unsafeGo型別
- 說說 Vue.js 元件的高階特性Vue.js元件
- 【C#進階】高階物件導向特性_2024-06-22C#物件
- Rust 程式設計影片教程(進階)——027_1 高階特性Rust程式設計
- Redis 高階資料型別重溫Redis資料型別
- Nginx 高階篇(五)Nginx 直連 RedisNginxRedis
- redis-22.高階資料型別Redis資料型別
- Java高階特性1_流庫_初體驗Java
- Spark Streaming高階特性在NDCG計算實踐Spark
- Rust 程式設計影片教程(進階)——027_2 高階特性 2Rust程式設計
- Rust 程式設計影片教程(進階)——027_3 高階特性 3Rust程式設計