目錄
1 sadd key member1 [merber2]:添加數據
3 srem key member1 [member2]:刪除數據
5 sismember key member:判斷集合中是否包含指定數據
6 srandmember key [count]:隨機從集合中獲取指定數量的數據,原集合不變
7 spop key [count] :隨機獲取集合中的數據,並從集合中移除
8 sinter/sunion/sdiff key1 [key2]:求兩個集合的交、並、差集
9 sinterstore/sunionstore/sdiffstore destination key1 [key2]:求兩個集合的交、並、差集並存儲到指定的集合當中
10 smove source destination member:將指定數據從原始集合移動到目錄集合中
在可以存放大量數據的list中,由於其底層是用雙端對列來實現的,因此,如果數據量真的非常大的話,需要從中間而不是從兩端進行操作,那麼list的效率是非常低下的。
1 set類型
- 新的存儲需求:存儲大量的數據,在查詢方面的提供更高的效率。
- 需要的存儲結構:能夠保存大量的數據,高效的內部存儲機制,便於查詢。
- set類型與hash存儲結構完全相同,僅使用鍵值,不存儲值,並且值是不允許重複的。
2 set類型數據的基本操作
由於set不想list要分左右,也不想hash要存儲值,因此操作起來非常的簡單。
1 sadd key member1 [merber2]:添加數據
2 smembers key:獲取全部數據
3 srem key member1 [member2]:刪除數據
4 scard key:獲取集合數據總量
可以看出users中現在有兩個元素
5 sismember key member:判斷集合中是否包含指定數據
返回0,因爲zhangsan不是users裏面的成員
6 srandmember key [count]:隨機從集合中獲取指定數量的數據,原集合不變
隨機獲取wangwu後,集合數據沒有發生變化
7 spop key [count] :隨機獲取集合中的數據,並從集合中移除
可以發現用spop之後,集合內的數據發生了變化。
8 sinter/sunion/sdiff key1 [key2]:求兩個集合的交、並、差集
我們有兩個集合:u1(a1,s1,b1),u2(s1,w1,)
注意sdiff是有方向性的。
9 sinterstore/sunionstore/sdiffstore destination key1 [key2]:求兩個集合的交、並、差集並存儲到指定的集合當中
sinterstore/sunionstore/sdiffstore和 sinter/sunion/sdiff相比,只需要提供一個目標集合即可。
10 smove source destination member:將指定數據從原始集合移動到目錄集合中
可以發現,已經將w1從u2從移動到u1中。
可以
3 set類型數據操作的注意事項
- set類型不允許數據重複,如果添加的數據已經存在,將只保留一份
- set雖然與hash的存儲結構相同,但是無法啓用hash中存儲值的空間
4 業務場景
- redis set可以用於隨機推薦類信息檢索,例如歌單推薦,熱點新聞推薦,熱賣旅遊線路,應用app、大V推薦等。
- 向支付寶、qq中的“你的好友xxx和你有x位共同聯繫人”,“你可能也認識xxx”都可以通過redis set的相關操作來實現。
- redis set可應用於同類信息的關聯搜索。