List類型
- 數據存儲需求: 存儲多個數據,並對數據進入存儲空間的順序進行區分
- 需要的存儲結構:一個存儲空間保存多個數據,且通過數據可以體現進入順序
- list類型:保存多個數據,底層使用雙向鏈表存儲結構實現
基本操作
- 添加/修改數據
lpush key value1 [value2] ...
rpush key value1 [value2] ...
- 獲取數據
lrange key start stop
# 獲取所有
lrange key 0 -1
lindex key index
llen key
- 獲取並移除數據
lpop key
rpop key
擴展操作
- 規定時間內獲取並移除數據
blpop key1 [key2] timeout
brpop key1 [key2] timeout
業務場景
朋友圈點贊,要求按照點贊順序顯示點贊好友信息
如果取消點贊,移除對應好友信息
- 移除指定數據
lrem key count value
Trips 6:
- redis應用於具有操作先后順序的數據控制
注意事項
- list中保存的數據都是string類型的,數據總容量是有限的,最多2^32-1個元素
- list具有索引的概念,但是操作數據時通常以隊列的形式進行入隊出隊操作,或以棧的形式進行入棧出棧操作
- 獲取全部數據操作結束索引設置為-1
- list可以對數據進行分頁操作,通常第一頁的信息來自於list,第二頁及更多的信息通過數據庫的形式加載
大概思路分析:
點贊用戶列表可以用一個list里面按順序存放着用戶id,而用戶的信息以json字符串的方式存在一個string中,當需要顯示點贊用戶名字列表,只需要讀取id list 根據id找到用戶名字,處理后即可獲取.
當需要移除時可以將用戶的id用lrem 去除, 至於如何避免重復點贊,可以增加一個set,set中存放點贊后的用戶id,這樣在進行rpush操作前先判斷set中是否存在用戶id,存在即以點贊過,否則未點贊.