redis-8.list型別

aliyeye發表於2021-01-17

list型別

  • 資料儲存需求:儲存多個資料,並對資料進入儲存空間的順序進行區分
  • 需要的儲存結構:一個儲存空間儲存多個資料,且透過資料可以體現進入順序
  • list型別:儲存多個資料,底層使用雙向連結串列儲存結構實現

list型別資料基本操作

  • 新增/修改資料
    //左push
    lpush key value1 [value2] ...
    //右push
    rpush key value1 [value2] ...
  • 獲取資料
    lrange key start stop
    lindex key index
    llen key
  • 獲取並移除資料
    //左邊移除一位
    lpop key
    //右邊移除一位
    rpop key

list型別資料擴充套件操作

  • 規定時間內獲取並移除資料
    blpop key1 [key2] timeout
    brpop key1 [key2] timeout

業務場景

微信朋友圈點贊,要求按照點贊順序顯示點贊好友資訊
如果取消點贊,移除對應好友資訊
OcEim7q5nf.png!large

解決方案

  • 移除指定資料
    lrem key count value
    Tips1:
  • redis應用於具有操作先後順序的資料控制

list型別資料操作注意事項

  • list中儲存的資料都是string型別的,資料總容量是有限的,最多2^32-1個元素。
  • list具有索引的概念,但是運算元據時通常以佇列的形式進行入隊出隊操作,或以棧的形式進行入棧出棧操作。
  • 獲取全部資料操作結束索引設定為-1。
  • list可以對資料進行分頁操作,通常第一頁的資訊來自於list,第二頁及更多的資訊透過資料庫的形式載入。

業務場景

新浪微博個人使用者的關注列表需要按照使用者關注順序進行展示,粉絲列表需要將最近關注的粉絲顯示在列表前面
新聞 資訊類網站如何將最新的新聞或諮詢按照發生的時間順序展示?
企業運營過程中,系統將產生大量的運營資料,如何保障多臺伺服器操作日誌的統一順序輸出?

  • 依賴list的資料具有順序的特徵對資訊進行管理
  • 使用佇列模型解決多路資訊彙總合併的問題
  • 使用棧模型解決最新訊息的問題

Tips2:

  • redis應用於最新訊息展示
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章