Redis五種類型及應用場景

參考資料:redis終章html

redis有五種基本數據類型,分別是String、List、Hash、Set、Sorted Set,接下來會逐個介紹每種類型及其應用場景。redis

String

String是最簡單也是最經常使用的數據類型,經過setget方法設置或獲取數據,有以下使用場景緩存

  • **緩存功能:**最經常使用的功能,沒有之一。好比,對某個用戶對象轉成JSON字符串,讀取後再轉換回目標對象;
  • **計數器:**經常使用於限制某個接口的請求次數,或者統計用戶的點擊次數等等,使用incr命令實現自增。實現計數器

Hash

這是相似Map的一種結構,經過hsethget方法設置或獲取數據。暫時在項目中沒有應用到這種結構。markdown

image-20201111150410410

List

List是簡單的字符串列表,按照插入順序排序,列表的頭部是左邊,尾部是右邊。頭尾均可以添加或移除元素。經常使用命令分佈式

image-20201111152636983

應用場景:oop

  • 消息隊列:能夠使用左進右出,或者右進左出,生產者在一端壓入數據,消費者從另外一端彈出數據。redis實現消息隊列spa

    注意:這種消息隊列須要消費者不斷輪詢,同時能夠使用blpop或者brpop,這兩個指令在列表沒有元素時,會一直阻塞。.net

Set

Set是無序集合,會自動去重。經常使用命令code

這種數據類型主要特色時可以去重,在分佈式環境下,能夠使用redisset實現全局數據去重。orm

Sorted Set

Sorted set既能夠去重,又能夠排序。與set相比,寫入value時,還須要設置score,redis會自動根據分數從小到達排序。經常使用命令

應用場景:

  • **延時隊列:**把任務執行時間戳做爲score,應用程序不斷輪詢redis,獲取分數最小的元素,比較score和當前時間戳。

  • **排行榜:**好比歌曲榜單、遊戲排行榜。多維度排序

    多數場景下,咱們須要多維度的排序,好比:軟件下載榜單,先按照下載量排序,若是下載量相同,再按照最新下載時間排序.

    針對這種兩維度排序,因爲score是浮點型,咱們能夠構建一個特殊的分數,整數部分爲下載量,小數部分是下載時間,這樣就實現兩個維度排序。

    可是,若是是三個維度、四個維度呢??

    自定義權重公式,好比score=下載量*10000 + 下載時間

相關文章
相關標籤/搜索