redis在項目中的使用場景


 

數據類型 使用場景
String

比如:我想知道什么時候封鎖一個IP(某一個IP地址在某一段時間內訪問的特別頻繁,那有可能這個IP可能存在風險,所以對它進行封鎖),使用Incrby命令記錄當前IP訪問次數 

存儲用戶信息【id,name,age】

存儲方式:set(userKey,用戶信息字符串)

Hash

存儲用戶信息【id,name,age】

存儲方式:Hset(key,filed,value)

hset(userKey,id,101)

hset(userKey,name,"admin")

hset(userKey,age,23)

這樣存儲的好處:當修改用戶信息某一項屬性值時,直接通過filed取值,並修改值

-----修改案例------

hget(userKey,id)

hset(userKey,id,102)

------------------------------

為什么不使用String存儲?

獲取方式:get(userKey)

會把參數為userKey對應的用戶信息字符串全部進行反序列號,而用戶信息字符串包含了用戶所有的信息

如果我只修改用戶的ID,那反序列化的其他信息其實是沒有任何意義的

序列化與反序列化是由IO進行操作的,使用String類型存儲增加了IO的使用次數,降低了程序的性能

對值為某類信息時不建議使用String類型存儲

List

實現最新消息的排行,還可以利用List的push命令,將任務存在list集合中,同時使用另一個pop命令將任務從集合中取出

Redis——list數據類型來模擬消息隊列。

比如:電商中的秒殺就可以采用這種方式來完成一個秒殺活動 

set

特殊之處:可以自動排重。

比如微博中將每個人的好友存在集合(Set)中

如果求兩個人的共同好友的操作,我們只需要求交集即可。(交/並集命令)

Zset

有序集合(sorted set),以某一個條件為權重,進行排序。

比如:京東看商品詳情時,都會有一個綜合排名,還有可以安裝價格、銷量進行排名


免責聲明!

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



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