Redis都有哪些數據類型


string

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

 

hash

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

  key=150

  value={

    “id”: 150,

    “name”: “zhangsan”,

    “age”: 20

  }

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

 

list

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

  key=某大v

  value=[zhangsan, lisi, wangwu]

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

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

  比如可以搞個簡單的消息隊列

 

set

  無序集合,自動去重

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

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

  可以基於set使用交集、並集、差集的操作,比如交集,可以把兩個人的粉絲列表做一個交集,看看倆人的共同好友是誰

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

 

sorted set

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

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

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

  zrank board username,可以看到用戶在排行榜里的排名

 

轉自:中華石杉Java工程師面試突擊

 


免責聲明!

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



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