redis實現朋友圈點贊


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,存在即以點贊過,否則未點贊.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM