目錄
- 1、介紹
- 2、底層實現
- 【1】整數集合
- 【2】哈希表
- 3、常用指令
1、介紹
Redis的set集合類型是一種無序且元素唯一的數據結構,支持高效的成員判斷、集合運算和隨機訪問。
2、底層實現
【1】整數集合
適用場景
當集合中所有的元素都是整數,且元素數量較少時(默認配置為 set-max-intset-entries 512)
實現特點
1、連續內存存儲,類似數組,支持二分法查找
2、自動升級,當插入非整數或超出當前整數類型范圍時,會轉化為哈希表
【2】哈希表
適用場景
元素包含非整數,或元素數量超過intset閾值
實現特定
1、使用Redis的通用鏈式哈希結構,鍵為元素值,值為NULL。
2、自動擴縮容,通過rehash機制平衡性能與內存占用。
3、常用指令
命令 | 語法 | 作用 |
---|---|---|
SADD | SADD key member [member …] | 向集合key添加一個或多個成員,已存在的成員會被忽略 |
SREM | SREM key member [member …] | 從集合key移除一個或多個成員,不存在的成員會被忽略 |
SMEMBERS | SMEMBERS key | 返回集合key中所有成員(無序) |
SISMEMBER | SISMEMBER key member | 判斷member是否是集合key的成員,返回1(存在)或0(不存在) |
SCARD | SCARD key | 返回集合key的成員數量 |
SPOP | SPOP key [count] | 隨機移除并返回集合key中的一個或多個成員(默認1個) |
SRANDMEMBER | SRANDMEMBER key [count] | 隨機返回集合key中的一個或多個成員 |
SMOVE | SMOVE source dest member | 將member從source集合移動到dest集合(原子操作) |
SINTER | SINTER key [key …] | 返回多個集合的交集 |
SUNION | SUNION key [key …] | 返回多個集合的并集 |
SDIFF | SDIFF key [key …] | 返回第一個集合與其它集合的差值(即key1有而其他集合沒有的成員) |
SINTERSTORE | SINTERSTORE dest key [key …] | 計算多個集合的交集并存儲到dest |
SUNIONSTORE | SUNIONSTORE dest key [key …] | 計算多個結合的并集并存儲到dest |
SDIFFSTORE | SDIFFSTORE dest key [key …] | 計算多個集合的差集并存儲到dest |
SSCAN | SSCAN key cursor [MATCH pattern] [COUNT count] | 增量迭代集合中的成員 |