大话 Redis 数据结构
數(shù)據(jù)結(jié)構(gòu)而非類型
Redis 有 5 種基本數(shù)據(jù)結(jié)構(gòu):
有很多文章都會說,Redis 支持 5 種常用的 數(shù)據(jù)類型,這其實存在很大的歧義。Redis 里存的都是二進(jìn)制數(shù)據(jù),其實就是字節(jié)數(shù)組 (byte[]),這些字節(jié)數(shù)據(jù)是沒有數(shù)據(jù)類型的,只有把它們按照合理的格式解碼后,可以變成一個字符串,數(shù)字或?qū)ο?#xff0c;此時才具有數(shù)據(jù)類型。
所以任何東西只要能轉(zhuǎn)化成字節(jié)數(shù)組 (byte[]),就可以存到 Redis 里,無論是字符串、數(shù)字、對象、圖片、聲音、還是其他文件。
string
Redis 里的數(shù)據(jù)結(jié)構(gòu) string 指的并不是字符串,它其實表示的是一種最簡單的,一個 key 只能對應(yīng)一個 value 的數(shù)據(jù)結(jié)構(gòu)。這里的 key 和 value 都是 byte 數(shù)組,只不過 key 一般是由一個字符串轉(zhuǎn)換成的 byte 數(shù)組,value 則根據(jù)實際需要而定。
在特定情況下,對 value 也會有一些要求,比如要進(jìn)行自增或自減操作,那 value 對應(yīng)的 byte 數(shù)組必須要能被解碼成一個數(shù)字才行。
value 是一個可變的字節(jié)數(shù)組,我們初始化字符串的內(nèi)容,
list
那么 list 這種數(shù)據(jù)結(jié)構(gòu),其實表示一個 key 可以對應(yīng)多個 value,且 value 之間是有先后順序的,value 值可以重復(fù)。
set
set 這種數(shù)據(jù)結(jié)構(gòu),表示一個 key 可以對應(yīng)多個 value,且 value 之間是沒有先后順序的,value 值不可以重復(fù)。
hash
hash 這種數(shù)據(jù)結(jié)構(gòu),表示一個 key 可以對應(yīng)多個 key - value,此時這些 key - value 對之間的先后順序一般意義不大,這是一個按照名稱語義來訪問的數(shù)據(jù)結(jié)構(gòu),而非位置語義。
zset
zset 又稱 sorted set,這種數(shù)據(jù)結(jié)構(gòu)表示一個 key 可以對應(yīng)多個 value,value 之間是有大小排序的,value 值不可以重復(fù)。每個 value 都和一個浮點數(shù)相關(guān)聯(lián),該浮點數(shù)叫 score。元素排序規(guī)則是:先按 score 排序,再按 value 排序。
轉(zhuǎn)載于:https://juejin.im/post/5cb7c055e51d456e303db87b
總結(jié)
以上是生活随笔為你收集整理的大话 Redis 数据结构的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Visual studio 无法打开源文
- 下一篇: 共话新基建,墨天轮数据库大咖讲坛第一期圆