標籤:
set 集合類型
釋義:
redis 的 set 是 string 類型的無序集合
set 元素最大可以包含(2的32次方-1)個元素
關於 set 集合類型除了基本的添加刪除操作 其他有用的操作還包含集合的
並集(union),交集(intersection),差集(difference).
通過這些操作實現SNS中的 好友推薦功能
注意:
每個集合中的各個元素不能重複
應用場合:
QQ好友的推薦
set 類型操作:
sadd key member
添加一個 string 元素到 key 對應的 set 集合中 成功返回 1 如果元素在集合中 返回0 若 key 對應的 set 集合不存在 返回錯誤
srem key member[member]
從 key 對應的 set 中移除給定的元素 成功返回 1
smove p1 p2 member
從 p1 對應 set 中移除 member 並添加到 p2 對應 set 中
scard key
返回 set 中元素的個數
sismember key member
判斷 member 是否在 set 中
sinter key1 key2... keyN
返回所有給定 key 的交集
sunion key1 key2... keyN
返回所有給定 key 的並集
sdiff key1 key2... keyN
返回所有給定 key 的差集( 只有 key1 的 沒有 key2 的)
smembers key
返回 key 對應 set 的所有元素 結果是無序的
eg:
laowen10 朋友圈 laowen20 朋友圈
公用朋友
laowen 11 laowen21
laowen 12 laowen01 laowen22
laowen 13 laowen02 laowen23
// 產生 laowen10 的朋友圈 的 set 集合
sadd laowen10 laowen11 // OK 表示添加OK
sadd laowen10 laowen12 // OK 表示添加OK
sadd laowen10 laowen13 // OK 表示添加OK
sadd laowen10 laowen01 // OK 表示添加OK
sadd laowen10 laowen02 // OK 表示添加OK
// 產生 laowen20 的朋友圈 的 set 集合
sadd laowen20 laowen21 // OK 表示添加OK
sadd laowen20 laowen22 // OK 表示添加OK
sadd laowen20 laowen23 // OK 表示添加OK
sadd laowen20 laowen01 // OK 表示添加OK
sadd laowen20 laowen02 // OK 表示添加OK
// 交集 擷取到交集
sinter laowen10 laowen20
// 返回交集結果
// 1) "laowen01"
// 2) "laowen02"
// 並集 擷取到並集
sunion laowen10 laowen20
// 返回並集結果
// 1) "laowen11"
// 2) "laowen12"
// 3) "laowen13"
// 4) "laowen21"
// 5) "laowen22"
// 6) "laowen23"
// 7) "laowen01"
// 8) "laowen02"
// 差集 擷取到差集
sdiff laowen10 laowen20
// laowen10 與 laowen20 比較 返回只屬於 laowen10 的集合
// 1) "laowen11"
// 2) "laowen12"
// 3) "laowen13"
sdiff laowen20 laowen10
// laowen20 與 laowen10 比較 返回只屬於 laowen20 的集合
// 1) "laowen21"
// 2) "laowen22"
// 3) "laowen23"
// 擷取給定元素的集合
smembers laowen10
// 擷取到 laowen10 的 set 集合
// 1) "laowen11"
// 2) "laowen12"
// 3) "laowen13"
// 4) "laowen01"
// 5) "laowen02"
// 判斷是否存在在對應的集合中
sismember laowen10 laowen11
// (integer) 1 // 說明 laowen11 在 laowen10 的 set 集合中
sismember laowen10 laowen21
// (integer) 0 // 說明 laowen21 不在 laowen10 的 set 集合中
// 擷取到 key 對應的 set 集合中的元素的個數
scard laowen10
// (integer) 5 // 說明 有5個元素
// 移動元素
smove laowen10 laowen20 laowen11
// (integer) 1 // 將 laowen10 集合裡面的元素 laowen11 移動到 laowen20 集合下
// 刪除元素
srem laowen20 laowen11
// (integer) 1 // 將 laowen20 集合裡面的元素 laowen11 刪除
使用 redis ( set集合類型操作)