redis學習筆記之5大數據類型的應用場景

1.string:

a.緩存熱點數據,如圖:

b.多維度計數、防作弊:incr命令

c.共享session:session_id是唯一的,以此爲key存放session,redis集中管理,但要防止redis崩潰

d.限速:如短信驗證碼限速,setex命令

2.hash:

a.緩存實體類信息,如圖:

與直接用string去存相比,可以更加細粒度地操作實體類的屬性;如需修改實體類某一屬性,使用string存需要整個字符串get出來重新設置後再set進去,而使用hash則可以直接hset即可,如需修改多個屬性還可使用hash的批量hset命令或pipeline

b.縮減redis中key的數量:後面介紹

3.list:

a.消息隊列: lpush+brpop可實現阻塞隊列,生產者在列表左側插入元素,多個消費者客戶端使用brpop阻塞式的"搶"列表尾部元素,但一般不這麼用,畢竟很多消息中間件做得比這個更好

b.對象列表:以hash結構存儲對象信息,並放入列表裏

列表命令組合:

lpush+lpop=Stack(棧)、lpush+rpop=Queue(隊列)、 lpush+ltrim=Capped Collection(有限集合)、 lpush+brpop=Message Queue(消息隊列)

4.set:

a.標籤(tag):

如:一個用戶可能對娛樂、體育比較感興趣,另一個用戶可能對歷史、新聞比較感興趣,這些興趣點就是標籤,有了這些數據就可以使用set的"交"運算得到喜歡同一個標籤的人,以及用戶的共同喜好的標籤等等

b.生成隨機數(抽獎等):spop/srandmember=Random item

5.zset:

a.排行榜系統:

如:視頻網站需要對用戶上傳的視頻做排行榜,榜單的維度可能是多個方面的:按照時間、按照播放數量、按照獲得的贊數等

用string或hash存儲對象信息,score爲排行榜維度的值,member爲對象唯一標識,先從zset中取出唯一標識,後再取對象信息,便可得到一個有序的對象列表

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章