redis的資料結構

2021-09-25 14:10:44 字數 1772 閱讀 3924

redis 都有哪些資料型別?分別在哪些場景下使用比較合適?

redis 主要有以下幾種資料型別:

string

hash

list

setsorted set

string

這是最簡單的型別,就是普通的 set 和 get,做簡單的 kv 快取。

set name ccx

get name

hash

這個是類似 map 的一種結構,這個一般就是可以將結構化的資料,比如乙個物件(前提是這個物件沒巢狀其他的物件)給快取在 redis 裡,然後每次讀寫快取的時候,可以就操作 hash 裡的某個字段。

hset person name bingo

hset person age 20

hset person id 1

hget person name

person =

list

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

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

0開始位置,-1結束位置,結束位置為-1時,表示列表的最後乙個位置,即檢視所有。**

lrange mylist 0 -1

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

lpush mylist 1    將乙個或多個值推入列表的右端

lpush mylist 2

lpush mylist 3 4 5

rpop mylist

rpush 將乙個或多個值推入列表的右端

rpop 移除並返回列表最右端的元素

lpop 移除並返回列表最左端的元素

set

set 是無序集合,自動去重。

直接基於 set 將系統裡需要去重的資料扔進去,自動就給去重了,如果你需要對一些資料進行快速的全域性去重,你當然也可以基於 jvm 記憶體裡的 hashset 進行去重,但是如果你的某個系統部署在多台機器上呢?得基於 redis 進行全域性的 set 去重。

微博應用中,可以將乙個使用者所有的關注人存在乙個集合中,將其所有粉絲存在乙個集合。redis還為集合提供了求交集、並集、差集等操作,可以非常方便的實現如共同關注、共同喜好、二度好友等功能,對上面的所有集合操作,你還可以使用不同的命令選擇將結果返回給客戶端還是存集到乙個新的集合中。

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

sorted set

sorted set 是排序的 set,去重但可以排序,寫進去的時候給乙個分數,自動根據分數排序。

zadd board 85 ccx

zadd board 72 rw

zadd board 96 ccx-rw

zadd board 63 rw-ccx

獲取排名前三的使用者(預設是公升序,所以需要 rev 改為降序)

zrevrange board 0 3
獲取某使用者的排名

zrank board rw
常見命令的使用:

redis內部資料結構的資料結構

redis對外的公眾的資料結構有五種string,list,set,hash,zset 編碼常量 編碼所對應的底層資料結構 redis encoding int long 型別的整數 redis encoding embstr embstr 編碼的簡單動態字串 redis encoding raw ...

Redis 的資料結構

redis是乙個先進的key value鍵值儲存資料庫,通常作為資料結構伺服器。支援strings,hashes,lists,sets,sorted sets,bitmaps 和hyperloglogs redis的字串為sds dynamic string 可以儲存任何東西,最大長度可達515兆。...

Redis的資料結構

一.redis有哪些資料型別?字串string 字典hash 列表list 集合set 有序集合sortedset hyperloglog redis在2.8.9加入的hyperloglog結構,是用來做基數統計的演算法,其優點是在輸入元素的數量或者體積非常大的時候,計算基數所需的空間總是固定的並且...