国产chinesehdxxxx野外,国产av无码专区亚洲av琪琪,播放男人添女人下边视频,成人国产精品一区二区免费看,chinese丰满人妻videos

Redis簡(jiǎn)單動(dòng)態(tài)字符串

2018-08-02 14:35 更新

Redis簡(jiǎn)單動(dòng)態(tài)字符串

Redis 沒(méi)有直接使用 C 語(yǔ)言傳統(tǒng)的字符串表示(以空字符結(jié)尾的字符數(shù)組,以下簡(jiǎn)稱 C 字符串), 而是自己構(gòu)建了一種名為簡(jiǎn)單動(dòng)態(tài)字符串(simple dynamic string,SDS)的抽象類型, 并將 SDS 用作 Redis 的默認(rèn)字符串表示。

在 Redis 里面, C 字符串只會(huì)作為字符串字面量(string literal), 用在一些無(wú)須對(duì)字符串值進(jìn)行修改的地方, 比如打印日志:

redisLog(REDIS_WARNING,"Redis is now ready to exit, bye bye...");

當(dāng) Redis 需要的不僅僅是一個(gè)字符串字面量, 而是一個(gè)可以被修改的字符串值時(shí), Redis 就會(huì)使用 SDS 來(lái)表示字符串值: 比如在 Redis 的數(shù)據(jù)庫(kù)里面, 包含字符串值的鍵值對(duì)在底層都是由 SDS 實(shí)現(xiàn)的。

舉個(gè)例子, 如果客戶端執(zhí)行命令:

redis> SET msg "hello world"
OK

那么 Redis 將在數(shù)據(jù)庫(kù)中創(chuàng)建了一個(gè)新的鍵值對(duì), 其中:

  • 鍵值對(duì)的鍵是一個(gè)字符串對(duì)象, 對(duì)象的底層實(shí)現(xiàn)是一個(gè)保存著字符串 "msg" 的 SDS 。
  • 鍵值對(duì)的值也是一個(gè)字符串對(duì)象, 對(duì)象的底層實(shí)現(xiàn)是一個(gè)保存著字符串 "hello world" 的 SDS 。

又比如說(shuō), 如果客戶端執(zhí)行命令:

redis> RPUSH fruits "apple" "banana" "cherry"
(integer) 3

那么 Redis 將在數(shù)據(jù)庫(kù)中創(chuàng)建一個(gè)新的鍵值對(duì), 其中:

  • 鍵值對(duì)的鍵是一個(gè)字符串對(duì)象, 對(duì)象的底層實(shí)現(xiàn)是一個(gè)保存了字符串 "fruits" 的 SDS 。
  • 鍵值對(duì)的值是一個(gè)列表對(duì)象, 列表對(duì)象包含了三個(gè)字符串對(duì)象, 這三個(gè)字符串對(duì)象分別由三個(gè) SDS 實(shí)現(xiàn): 第一個(gè) SDS 保存著字符串 "apple" , 第二個(gè) SDS 保存著字符串 "banana" , 第三個(gè) SDS 保存著字符串 "cherry" 。

除了用來(lái)保存數(shù)據(jù)庫(kù)中的字符串值之外, SDS 還被用作緩沖區(qū)(buffer): AOF 模塊中的 AOF 緩沖區(qū), 以及客戶端狀態(tài)中的輸入緩沖區(qū), 都是由 SDS 實(shí)現(xiàn)的, 在之后介紹 AOF 持久化和客戶端狀態(tài)的時(shí)候, 我們會(huì)看到 SDS 在這兩個(gè)模塊中的應(yīng)用。

本章接下來(lái)將對(duì) SDS 的實(shí)現(xiàn)進(jìn)行介紹, 說(shuō)明 SDS 和 C 字符串的不同之處, 解釋為什么 Redis 要使用 SDS 而不是 C 字符串, 并在本章的最后列出 SDS 的操作 API 。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)