redis-9.set型別

aliyeye發表於2021-01-18

set型別

  • 新的儲存需求:儲存大量的資料,在查詢方面提供更高的效率
  • 需要的儲存結構:能夠儲存大量的資料,高效的內部儲存機制,便於查詢
  • set型別:與hash儲存結構完成相同,僅儲存鍵,不儲存值(nil),並且值是不允許重複的INzSIBjOEd.png!large

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 協議》,轉載必須註明作者和本文連結

相關文章