數據類型 | 使用場景 |
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),以某一個條件為權重,進行排序。 比如:京東看商品詳情時,都會有一個綜合排名,還有可以安裝價格、銷量進行排名 |