W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
Redis 沒有直接使用 C 語言傳統(tǒng)的字符串表示(以空字符結(jié)尾的字符數(shù)組,以下簡稱 C 字符串), 而是自己構(gòu)建了一種名為簡單動態(tài)字符串(simple dynamic string,SDS)的抽象類型, 并將 SDS 用作 Redis 的默認字符串表示。
在 Redis 里面, C 字符串只會作為字符串字面量(string literal), 用在一些無須對字符串值進行修改的地方, 比如打印日志:
redisLog(REDIS_WARNING,"Redis is now ready to exit, bye bye...");
當 Redis 需要的不僅僅是一個字符串字面量, 而是一個可以被修改的字符串值時, Redis 就會使用 SDS 來表示字符串值: 比如在 Redis 的數(shù)據(jù)庫里面, 包含字符串值的鍵值對在底層都是由 SDS 實現(xiàn)的。
舉個例子, 如果客戶端執(zhí)行命令:
redis> SET msg "hello world"
OK
那么 Redis 將在數(shù)據(jù)庫中創(chuàng)建了一個新的鍵值對, 其中:
"msg"
的 SDS 。"hello world"
的 SDS 。又比如說, 如果客戶端執(zhí)行命令:
redis> RPUSH fruits "apple" "banana" "cherry"
(integer) 3
那么 Redis 將在數(shù)據(jù)庫中創(chuàng)建一個新的鍵值對, 其中:
"fruits"
的 SDS 。"apple"
, 第二個 SDS 保存著字符串 "banana"
, 第三個 SDS 保存著字符串 "cherry"
。除了用來保存數(shù)據(jù)庫中的字符串值之外, SDS 還被用作緩沖區(qū)(buffer): AOF 模塊中的 AOF 緩沖區(qū), 以及客戶端狀態(tài)中的輸入緩沖區(qū), 都是由 SDS 實現(xiàn)的, 在之后介紹 AOF 持久化和客戶端狀態(tài)的時候, 我們會看到 SDS 在這兩個模塊中的應(yīng)用。
本章接下來將對 SDS 的實現(xiàn)進行介紹, 說明 SDS 和 C 字符串的不同之處, 解釋為什么 Redis 要使用 SDS 而不是 C 字符串, 并在本章的最后列出 SDS 的操作 API 。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: