redis的字串儲存結構叫sds(****** dynamic string),結構如下
struct sds
儲存結構:
長度小的時候使用embstr,長度大的時候使用raw,大小的分界線是 44。
為什麼是44?首先我們一起來分析下redisobject物件頭。
struct redisobject robj;
redis物件頭占用4bits+4bits+24bits+4bytes+8bytes=16bytes
再來看下sds結構,
struct sds
sds結構至少占用1byte+1byte+1byte=3bytes
以上可知:分配乙個字串的最小空間占用為16bytes+3bytes=19bytes。
在記憶體分配器 jemalloc/tcmalloc 中,分配記憶體大小的單位都是 2、4、8、16、32、64 等,為了容納乙個完整的embstr物件,至少分配32位元組的空間。
如果總體超過了64位元組的空間,那麼我們認為就是乙個大的字串了,就使用raw來儲存了。
sds結構體中的字串
又因為字串以\0結尾,所以embstr最大能容納的字元創長度為64-19-1=44bytes。
Redis string型別的操作
設定key的值 set key value 設定多個key mset key1 value1 key2 value2 keyx valuex 獲取key get key 獲取多個key mget key1 key2.keyx 指定key的字串追加value 擷取key的字串 包括開始位置和結束位置 ...
redis String資料型別
1 set 設定乙個key value 2 get 根據key獲得對應的value 127.0.0.1 6379 set name hello ok127.0.0.1 6379 get name hello 127.0.0.1 6379 3 mset 一次設定多個key value 4 mget 一...
Redis string型別常用操作
redis 有 string list set zset hash資料型別。string型別是最基礎的,其他型別都是在string型別上去建立的,所以了解熟悉string型別的常用操作對於學習redis非常必要。127.0.0.1 6379 7 get hello world integer 141...