set型別
- 新的儲存需求:儲存大量的資料,在查詢方面提供更高的效率
- 需要的儲存結構:能夠儲存大量的資料,高效的內部儲存機制,便於查詢
set型別:與hash儲存結構完成相同,僅儲存鍵,不儲存值(nil),並且值是不允許重複的
set型別資料的基本操作
- 新增資料
sadd key member1 [member2]
- 獲取全部資料
smembers key
- 刪除資料
srem key member1 [member2]
- 獲取集合資料總量
scard key
- 判斷集合中是否包含指定資料
sismember key member
set型別資料的擴充套件操作
業務場景
每位使用者首次使用今日頭條時會設定3項愛好的內容,但是後期為了增加使用者的活躍度 興趣點,必須讓使用者對其他資訊類別逐漸產生興趣,增加客戶留存度,如何實現?
業務分析
- 系統分析出各個分類的最新或最熱點資訊條目並組織成set集合
- 隨機挑選其中部分資訊
- 配合使用者關注資訊分類的熱點資訊組織成展示的全資訊集合
解決方案
- 隨機獲取集合中指定數量的資料
srandmember key [count]
- 隨機獲取集合中的某個資料並將該資料移出集合
spop key
Tips1:
- redis應用於隨機推薦類資訊檢索,例如熱點歌單推薦,熱點新聞推薦,熱賣旅遊線路,應用app推薦,大V推薦等
業務場景
許多app有部門功能,根據共同好友,推薦其他人。或者顯示共同好友的個數。
美團外賣為了提升成單量,必須幫助使用者挖掘美食需求,如何推薦給使用者最合適自己的美食?
新浪微博為了增加使用者熱度,提高使用者留存性,需要微博使用者在關注更多的人,以此獲得更多的資訊或熱門話題,如何提高使用者關注他人的總量?
解決方案
求兩個集合的交、並、差集
sinter key1 [key2] sunion key1 [key2] sdiff key1 [key2]
求兩個集合的交、並、差集並儲存到指定集合中
sinterstore destination key1 [key2] sunionstore destination key1 [key2] sdiffstore destination key1 [key2]
將指定資料從原始集合中移動到目標集合中
smove source destination member
本作品採用《CC 協議》,轉載必須註明作者和本文連結