Redis之資料結構及優化部分總結

2021-10-06 05:33:23 字數 1096 閱讀 3189

redis 中,鍵的資料型別是字串,但是為了豐富資料儲存的方式,方便開發者使用,值的資料型別有很多,常用的資料型別有這樣幾種,它們分別是字串、列表、字典、集合、有序集合。

字串和普通的字串沒什麼區別

這種資料型別對應兩種實現方法,一種是壓縮列表(ziplist),另一種是雙向迴圈鍊錶。

當列表中儲存的資料量比較小的時候,列表就可以採用壓縮列表的方式實現。壓縮列表不支援隨機訪問,但是省空間

與普通陣列的區別

陣列要求每個元素的大小相同,如果我們要儲存不同長度的字串,那我們就需要用最大長度的字串大小作為元素的大小(假設是 20 個位元組)。那當我們儲存小於 20 個位元組長度的字串的時候,便會浪費部分儲存空間

壓縮列表不支援隨機訪問,但是節約記憶體。並且壓縮列表很小,越小越利於cpu快取

字典型別用來儲存一組資料對。每個資料對又包含鍵值兩部分。字典型別也有兩種實現方式。一種是我們剛剛講到的壓縮列表,另一種是雜湊表

一種是基於有序陣列,另一種是基於雜湊表

如果儲存資料少就用陣列,否則就用雜湊表

壓縮列表跳表

第一種是清除原有的儲存結構,只將資料儲存到磁碟中。當我們需要從磁碟還原資料到記憶體的時候,再重新將資料組織成原來的資料結構。實際上,redis 採用的就是這種持久化思路(快照方式rdb,檔案追加方式aof)。

第二種方式是保留原來的儲存格式,將資料按照原有的格式儲存在磁碟中。我們拿雜湊表這樣的資料結構來舉例。我們可以將雜湊表的大小、每個資料被雜湊到的槽的編號等資訊,都儲存在磁碟中。有了這些資訊,我們從磁碟中將資料還原到記憶體中的時候,就可以避免重新計算雜湊值。

redis之資料結構 上

1.redis之key value對 key 在儲存redis記憶體中的資料起的變數名字 value value 的型別可以是string,list,set,sort set,hash.一般情況 key的命名規則是 鍵盤除了空格 換行外其他的大部分字元都可以使用。建議key不要太長,佔記憶體,也不要...

redis資料結構之字典

字典 dictionary 其實和符號表 symbol table 關聯陣列 associative array 對映 map 是乙個東東,都是為了儲存鍵值對 k v pair 的資料結構,屌屌噠。php中因為能很方便的用關聯陣列,因此能寫出很多實用高效的 有空一定要去好好了解下php的關聯陣列是如...

redis資料結構之List

在redis中,list型別是按照插入順序排序的字串鍊錶。和資料結構中的普通鍊錶一樣,我們可以在其頭部 left 和尾部 right 新增新的元素。在插入時,如果該鍵並不存在,redis將為該鍵建立乙個新的鍊錶。與此相反,如果鍊錶中所有的元素均被移除,那麼該鍵也將會被從資料庫中刪除。list中可以包...