當前位置:
首頁 > 知識 > Redis有哪些數據類型,談談適用場景

Redis有哪些數據類型,談談適用場景

1 面試題

redis都有哪些數據類型?分別在哪些場景下使用比較合適?

2 考點分析

除非是感覺看你簡歷,就是工作3年以內的比較初級的一個同學,可能對技術沒有很深入的研究過,我才會問這類問題,在寶貴的面試時間裡,我實在是不想多問

其實問這個問題,主要就倆原因

看看你到底有沒有全面的了解redis有哪些功能,一般怎麼來用,啥場景用什麼,就怕你別就會最簡單的kv操作

看看你在實際項目里都怎麼玩兒過redis

要是你回答的不好,沒說出幾種數據類型,也沒說什麼場景,你完了,面試官對你印象肯定不好,覺得你平時就是做個簡單的set和get。

3 詳解

3.1 string

這是最基本的類型了,沒啥可說的,就是普通的set和get,做簡單的kv緩存

3.2 hash

這個是類似map的一種結構,這個一般就是可以將結構化的數據,比如一個對象(前提是這個對象沒嵌套其他的對象)給緩存在redis里,然後每次讀寫緩存的時候,可以就操作hash里的某個欄位。

hash類的數據結構,主要是用來存放一些對象,把一些簡單的對象給緩存起來,後續操作的時候,你可以直接僅僅修改這個對象中的某個欄位的值

3.3 list

有序列表,這個是可以玩兒出很多花樣的

微博,某個大v的粉絲,就可以以list的格式放在redis里去緩存

比如可以通過list存儲一些列表型的數據結構,類似粉絲列表了、文章的評論列表之類的東西

比如可以通過lrange命令,就是從某個元素開始讀取多少個元素,可以基於list實現分頁查詢,這個很棒的一個功能,基於redis實現簡單的高性能分頁,可以做類似微博那種下拉不斷分頁的東西,性能高,就一頁一頁走

比如可以搞個簡單的消息隊列,從list頭懟進去,從list尾巴那裡弄出來

3.4 set

無序集合,自動去重

直接基於set將系統里需要去重的數據扔進去,自動就給去重了,如果你需要對一些數據進行快速的全局去重,你當然也可以基於jvm內存里的HashSet進行去重,但是如果你的某個系統部署在多台機器上呢?

得基於redis進行全局的set去重

可以基於set玩兒交集、並集、差集的操作,比如交集吧,可以把兩個人的粉絲列表整一個交集,看看倆人的共同好友是誰?對吧

把兩個大v的粉絲都放在兩個set中,對兩個set做交集

3.5 sorted set

排序的set,去重但是可以排序,寫進去的時候給一個分數,自動根據分數排序,這個可以玩兒很多的花樣,最大的特點是有個分數可以自定義排序規則

比如說你要是想根據時間對數據排序,那麼可以寫入進去的時候用某個時間作為分數,人家自動給你按照時間排序了

排行榜:將每個用戶以及其對應的什麼分數寫入進去,zadd board score username,接著zrevrange board 0 99,就可以獲取排名前100的用戶;zrank board username,可以看到用戶在排行榜里的排名

獲取排名前3的用戶


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 千鋒JAVA開發學院 的精彩文章:

2019最新大廠面試演算法真題解析

TAG:千鋒JAVA開發學院 |