Stories

Detail Return Return

藍易雲cdn:Redis常用數據類型及常用命令 - Stories Detail

下面是一份面向實戰的一頁通(Docker/雲原生場景同樣適用),聚焦 <span style="color:red">Redis 常用數據類型</span> 與 <span style="color:red">高頻命令</span>,示例可直接敲,解釋緊跟其後。💡


總覽對比表(vditor/Markdown 友好)

類型 核心特性 典型場景 複雜度要點
String 二進制安全,支持自增 計數器、緩存對象 GET/SET O(1),INCR O(1)
Hash 鍵-字段-值 用户畫像、配置項 HGET/HSET O(1)
List 雙端鏈表 隊列、消息緩衝 LPUSH/BRPOP O(1)
Set 去重無序 標籤、去重 SADD/SCARD O(1)
ZSet 有序集合(分值) 排行榜、延時隊列 ZADD O(logN),範圍 O(logN+M)
Bitmap 位級別布爾 簽到、活躍度位圖 SETBIT/GETBIT O(1)
HyperLogLog 基數估計 UV/去重數 PFADD/PFCOUNT 近似
Geo 地理位置 附近檢索 GEOADD/GEORADIUS*
Stream 追加日誌/消費組 消息隊列 XADD O(1),XREAD 阻塞讀
注:GEORADIUS 在新版本以 GEOSEARCH 系列替代;範圍複雜度含返回量 M。

思維導圖(文字版)

Redis
├─ String → 計數/緩存/分佈式鎖
├─ Hash   → 用户信息/配置
├─ List   → 隊列/時間序列緩衝
├─ Set    → 去重/標籤/關係
├─ ZSet   → 排行/打分/延時
├─ Bitmap → 簽到/活躍位
├─ HLL    → 近似UV
├─ Geo    → 附近的人/店
└─ Stream → 多消費者消息

1)String

SET user:1:name "alice"
INCR pv:home
MGET user:1:name pv:home

解釋SET 寫入字符串;INCR 原子自增計數;MGET 批量讀,<span style="color:red">O(1)</span> 適合高 QPS 計數器與簡單緩存。


2)Hash

HSET user:1 name "alice" age 28
HGETALL user:1
HINCRBY user:1 score 5

解釋HSET 以字段維度存儲;HGETALL 拉取整張“小表”;HINCRBY 數值字段自增,適合<span style="color:red">用户畫像</span>與配置聚合。


3)List

LPUSH q:msg "m1" "m2"
BRPOP q:msg 5
LRANGE q:msg 0 10

解釋LPUSH 左入隊;BRPOP 阻塞出隊(超時 5 秒);LRANGE 切片讀取。用於<span style="color:red">輕量隊列/緩衝</span>,消費者少時性價比高。


4)Set

SADD tag:vip 1001 1002
SISMEMBER tag:vip 1001
SINTER tag:vip tag:beta

解釋SADD 去重寫入;SISMEMBER 判斷成員;SINTER 求交集,適合<span style="color:red">人羣圈選/去重</span>。


5)Sorted Set(ZSet)

ZADD rank:score 98 u1 87 u2
ZREVRANGE rank:score 0 9 WITHSCORES
ZINCRBY rank:score 5 u2

解釋ZADD 按分值建索引;ZREVRANGE 取 Top N;ZINCRBY 動態加分,適合<span style="color:red">排行榜/打分/延時隊列</span>。


6)Bitmap

SETBIT sign:2025-10-01 1001 1
GETBIT sign:2025-10-01 1001
BITCOUNT sign:2025-10-01

解釋:位操作按用户ID映射位點;BITCOUNT 統計簽到數量,空間極省,適合<span style="color:red">億級布爾</span>場景。


7)HyperLogLog

PFADD uv:2025-10-14 u1 u2 u3
PFCOUNT uv:2025-10-14

解釋:以極小內存估算去重數(誤差≈0.81%),適合 <span style="color:red">UV/全站去重</span>。


8)Geo

GEOADD shop:xy 121.4737 31.2304 s1 113.2644 23.1291 s2
GEOSEARCH shop:xy FROMLONLAT 121.47 31.23 BYRADIUS 5 km ASC

解釋GEOADD 存經緯度;GEOSEARCH 以座標+半徑檢索並按距離排序,適合<span style="color:red">附近的人/店</span>。


9)Stream(消息隊列)

XADD mq:order * uid 1001 amount 99
XGROUP CREATE mq:order g1 $ MKSTREAM
XREADGROUP GROUP g1 c1 COUNT 10 BLOCK 5000 STREAMS mq:order >

解釋XADD 追加事件;XGROUP 創建消費組;XREADGROUP 組內消費並可阻塞,滿足<span style="color:red">多消費者</span>與回溯。


10)Key 管理與過期(必做)

SET sess:tk abc EX 1800 NX
TTL sess:tk
UNLINK big:key

解釋EX 設定過期(秒),NX 確保只在不存在時寫入(常用於<span style="color:red">分佈式鎖/冪等</span>);UNLINK 異步刪除,減輕主線程阻塞。


性能與治理要點(可做即可贏)

  • <span style="color:red">按類型選模型</span>:計數器用 String;TopN 用 ZSet;UV 用 HLL;簽到用 Bitmap。
  • <span style="color:red">設置過期</span>:所有“會老化”的 Key 必須帶 TTL,避免內存慢泄漏。
  • <span style="color:red">大 Key 管控</span>:用 MEMORY USAGESCAN 巡檢;刪除用 UNLINK
  • <span style="color:red">阻塞命令</span>:BRPOP/XREAD 使用合理超時與併發,避免線程飢餓。
  • <span style="color:red">持久化與高可用</span>:AOF 開啓 appendfsync everysec,主從+哨兵或集羣保證可用性。

小結

用對數據結構,命中 O(1) 的“甜點區”,再配合 <span style="color:red">TTL、大 Key 治理、AOF+主從</span>,Redis 就能穩定地為你的業務“加速不翻車” 🚀。需要把上述命令打包成你的專項檢查清單或聯調腳本,我可以直接生成適配版。

user avatar starrocks Avatar sysin Avatar guangmingleiluodetouyingyi_bccdlf Avatar knifeblade Avatar 8848_62c77d4bb2532 Avatar
Favorites 5 users favorite the story!
Favorites

Add a new Comments

Some HTML is okay.