redis 學習(6)-- 集合類型
set 結(jié)構(gòu)
- 無序
- 無重復
- 集合間操作
set 集合內(nèi)操作
| sadd key memebr1 [member2...] |
向集合中添加一個或多個成員 |
| srem key member1 [member2...] |
從集合中刪除一個或多個成員 |
| scard key |
獲取集合中的元素個數(shù) |
| sismember key member |
判斷member元素是不是集合的成員 |
| srandmember key count |
隨機從集合中取出count個成員 |
| spop key |
隨機移除并返回集合中的一個成員 |
| smembers key |
獲取集合中的所有成員。時間復雜度為O(n),不建議使用,類似的操作可以使用SSCAN |
演示

實戰(zhàn)
抽獎系統(tǒng)
思路:將參與抽獎的用戶數(shù)放在 set 中,使用 spop 操作隨機彈出集合中的一個成員,即為中獎用戶。
類似微博中的喜歡,贊,踩功能實現(xiàn)
思路:將用戶的操作數(shù)保存在集合中。
set 集合間操作
即差集、交集、并集。
| sdiff key1 [key2...] |
返回給定所有集合的差集 |
| sdiffstore destKey key1 [key2...] |
計算給定所有集合的差集,并存入destKey |
| sinter key1 [key2...] |
返回給定所有集合的交集 |
| sinterstore destKey key1 [key2...] |
計算給定所有集合的交集,并存入destKey |
| sunion key1 [key2...] |
返回給定所有集合的并集 |
| sunionstore destKey key1 [key2...] |
計算給定所有集合的并集,并存入destKey |
實戰(zhàn)
共同關(guān)注的人,同時關(guān)注他的人
可以使用 sinter 命令來實現(xiàn)。返回所有集合的交集。
一些小建議
- SADD = Tagging (用來存放標簽)
- SPOP/SRANDMEMBER = Random item (用來做一些隨機數(shù)操作)
- SADD SINTER = Social Graph (用來做一些社交關(guān)系)
來源:http://www./content-2-212751.html
|