一、前言
Redis提供了多種數據結構,每種結構對應不同的應用場景。 本文對部分常用的核心數據結構和典型使用場景作出介紹。
二、String(字符串)
特點 :二進制安全,可存儲文本、數字、序列化對象等。場景 : 緩存:存儲Session、Token、圖片地址等。 計數器:文章閱讀量(INCR)、秒殺庫存(DECR)。 分布式鎖:SETNX實現簡單鎖(需結合過期時間)。 示例命令:
SET user:1001 "{\" name\" :\" Alice\" ,\" age\" :25}"
INCR article:1001:views
三、Hash(哈希表)
特點 :鍵值對集合,適合存儲對象。場景 : 對象存儲:用戶信息(字段獨立更新)、商品詳情。 購物車:以用戶ID為Key,商品ID為Field,數量為Value。 示例命令:
HSET user:1001 name Alice age 25
HINCRBY cart:1001 product:2001 1
四、List(列表)
特點 :雙向鏈表,支持棧/隊列操作。場景 : 消息隊列:簡單任務隊列(LPUSH+BRPOP)。 最新動態:朋友圈時間線(存儲最新N條動態)。 示例命令:
LPUSH feed:1001 "New post: Redis guide"
LRANGE feed:1001 0 4
五、Set(集合)
特點 :無序且唯一元素,支持交并差運算。場景 : 標簽系統:用戶興趣標簽(共同關注:SINTER)。 抽獎/黑名單:去重存儲(如抽獎用戶ID)。 示例命令:
SADD user:1001:tags tech database
SINTER user:1001:tags user:1002:tags
六、Sorted Set(有序集合)
特點 :元素按Score排序,支持范圍查詢。場景 : 排行榜:游戲積分排名(ZREVRANGE)。 延遲隊列:按時間戳排序處理任務。 示例命令:
ZADD leaderboard 5000 "PlayerA" 4800 "PlayerB"
ZREVRANGE leaderboard 0 9 WITHSCORES
七、拓展結構
八、使用建議
內存優化 :小對象優先用Hash(比多個String更省內存)。性能考量 :高頻寫入場景慎用大Key(如長List/Hash)。集群限制 :集群模式下慎用跨節點操作(如Set交并差)。通過合理選擇數據結構,可以顯著提升Redis的性能和資源利用率 。