Redis之5———set類型詳解:常用操作、業務場景

目錄

1 set類型

2 set類型數據的基本操作

1 sadd key member1 [merber2]:添加數據

2 smembers key:獲取全部數據

3 srem key member1 [member2]:刪除數據

4 scard key:獲取集合數據總量

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:將指定數據從原始集合移動到目錄集合中

3 set類型數據操作的注意事項

4 業務場景


在可以存放大量數據的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可應用於同類信息的關聯搜索。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章