Redis資料型別及其底層資料結構(上)

2021-09-19 08:04:29 字數 3231 閱讀 9549

字串型別string

概念:字串型別是redis的最基本型別,它可以儲存任何形式的字串,乙個 key 對應乙個 value。其它的四種型別都是字串型別的不同形式。

最大儲存:512mb

基本操作

getkey,setkey value

設定/獲取鍵值

strlenkey

獲取字串長度(鍵不存在返回0),中文採用utf-8編碼

mgetkey [key …],msetkey value [key value …]

設定/獲取多個鍵值

雜湊型別hash

概念:redis hash乙個鍵值(key=>value)對集合。即乙個 string 型別的 field 和 value 的對映表,hash 特別適合用於儲存物件。

最大儲存:2^32 -1個鍵值對

基本操作

hsetkey field value

設定單個不存在時返回1,存在時返回0,沒有更新和插入之分

hmsetkey field value [field value …]

設定多個

hgetkey field

讀取單個,不存在是返回nil

hmgetkey field [field …]

讀取多個

hgetallkey

讀取全部,返回時字段和字段值的列表

列表型別list

概念:列表是簡單的字串列表,按照插入順序排序。內部使用雙向鍊錶實現,所以獲取越接近兩端的元素速度越快,但通過索引訪問時會比較慢。

最大儲存:2^32 - 1 元素

基本操作

lpushkey value [value …]

新增左邊元素,返回新增後的列表元素的總個數

rpushkey value [value …]

新增右邊元素,返回新增後的列表元素的總個數

lpopkey

移除左邊第乙個元素,返回被移除的元素值

rpopkey

移除右邊第乙個元素,返回被移除的元素值

llen

key 列表元素個數,不存在時返回0,redis是直接讀取現成的值,並不是統計個數

集合型別set

概念:set是string型別的無序集合,內部是使用值為空的雜湊表實現的,所以新增,刪除,查詢的複雜度都是o(1)。

最大儲存:2^32 - 1 個成員

基本操作

saddkey member [member …]

新增元素。向乙個集合新增乙個或多個元素,因為集合的唯一性,所以新增相同值時會被忽略。 返回成功新增元素的數量

sremkey member [member …]

刪除元素。刪除集合中乙個或多個元素,返回成功刪除的個數

smemberskey

獲取全部元素。返回集合全部元素

sismemberkey member

值是否存在。如果存在返回1,不存在返回0

spopkey [count]

彈出元素。因為集合是無序的,所以spop會隨機彈出乙個元素

有序集合型別zset

概念:和 set 一樣也是string型別元素的集合,且不允許重複的成員。但每個元素都會關聯乙個double型別的分數。通過分數來為集合中的成員進行從小到大的排序。zset的成員是唯一的,但分數(score)卻可以重複。

最大儲存:2^32 - 1 個成員

基本操作

zaddkey [nx|xx] [ch] [incr] score member [score member …]

新增集合元素。不存在新增,存在更新。

zscorekey member

獲取元素分數。返回元素成員的score 分數

zrangekey start top [withscores]

返回元素小到大。加上withscores 返回帶元素。當分數一樣時,按元素排序。

zrevrangekey start [withscores]

返回元素從大到小。

zrangebyscorekey min max [withscore]

返回從小到大的在min和max之間的元素,( 符號表示不包含,例如:80-100,(80 100。 withscore返回帶分數。

zrevrangebyscorekey max min [withscore]

與zrangebyscore類似,只不過該命令是從大到小排序的。

zincrbykey increment member

增加分數,返回增加後的分數;如果成員不存在,則新增乙個為0的成員。

redis五種資料型別及其底層資料結構

list底層採用壓縮列表和雙向鍊錶儲存,當元素數量小於512個且元素長度均小於64b時,採用壓縮列表,否則採用雙向鍊錶。hash底層採用壓縮列表和雜湊表儲存。當所有鍵值對的鍵和值長度都小於64b且數量小於512時,就使用壓縮列表,先放入key,再放入value 否則就使用雜湊表,直接將每乙個鍵值對存...

Redis常用資料型別底層資料結構分析

redis是一種鍵值 key value 資料庫,相對於關係型資料庫,它也被叫作非關係型資料庫 redis中,鍵的資料型別是字串,但是為了非富資料儲存方式,方便開發者使用,值的資料型別有很多 這種資料型別非常簡單,對應到資料結構裡面,就是字串 支援儲存一組資料,這種資料型別對應兩種方式,一種是壓縮列...

redis 基本資料型別及底層資料結構

1.redis 基本資料型別每種資料型別都對應兩種及以上資料結構,同一型別不同條件底層資料結構不同 檢視key對應的value編碼型別使用object encoding key 1.string string 型別有embstr和raw,int三種型別 當set的是int時,底層儲存的是int 當s...