99re热这里只有精品视频,7777色鬼xxxx欧美色妇,国产成人精品一区二三区在线观看,内射爽无广熟女亚洲,精品人妻av一区二区三区

字典

2018-02-23 16:24 更新

字典

字典, 又稱符號(hào)表(symbol table)、關(guān)聯(lián)數(shù)組(associative array)或者映射(map), 是一種用于保存鍵值對(duì)(key-value pair)的抽象數(shù)據(jù)結(jié)構(gòu)。

在字典中, 一個(gè)鍵(key)可以和一個(gè)值(value)進(jìn)行關(guān)聯(lián)(或者說(shuō)將鍵映射為值), 這些關(guān)聯(lián)的鍵和值就被稱為鍵值對(duì)。

字典中的每個(gè)鍵都是獨(dú)一無(wú)二的, 程序可以在字典中根據(jù)鍵查找與之關(guān)聯(lián)的值, 或者通過(guò)鍵來(lái)更新值, 又或者根據(jù)鍵來(lái)刪除整個(gè)鍵值對(duì), 等等。

字典經(jīng)常作為一種數(shù)據(jù)結(jié)構(gòu)內(nèi)置在很多高級(jí)編程語(yǔ)言里面, 但 Redis 所使用的 C 語(yǔ)言并沒(méi)有內(nèi)置這種數(shù)據(jù)結(jié)構(gòu), 因此 Redis 構(gòu)建了自己的字典實(shí)現(xiàn)。

字典在 Redis 中的應(yīng)用相當(dāng)廣泛, 比如 Redis 的數(shù)據(jù)庫(kù)就是使用字典來(lái)作為底層實(shí)現(xiàn)的, 對(duì)數(shù)據(jù)庫(kù)的增、刪、查、改操作也是構(gòu)建在對(duì)字典的操作之上的。

舉個(gè)例子, 當(dāng)我們執(zhí)行命令:

redis> SET msg "hello world"
OK

在數(shù)據(jù)庫(kù)中創(chuàng)建一個(gè)鍵為?"msg"?, 值為?"hello?world"?的鍵值對(duì)時(shí), 這個(gè)鍵值對(duì)就是保存在代表數(shù)據(jù)庫(kù)的字典里面的。

除了用來(lái)表示數(shù)據(jù)庫(kù)之外, 字典還是哈希鍵的底層實(shí)現(xiàn)之一: 當(dāng)一個(gè)哈希鍵包含的鍵值對(duì)比較多, 又或者鍵值對(duì)中的元素都是比較長(zhǎng)的字符串時(shí), Redis 就會(huì)使用字典作為哈希鍵的底層實(shí)現(xiàn)。

舉個(gè)例子,?website?是一個(gè)包含?10086?個(gè)鍵值對(duì)的哈希鍵, 這個(gè)哈希鍵的鍵都是一些數(shù)據(jù)庫(kù)的名字, 而鍵的值就是數(shù)據(jù)庫(kù)的主頁(yè)網(wǎng)址:

redis> HLEN website
(integer) 10086

redis> HGETALL website
1) "Redis"
2) "Redis.io"
3) "MariaDB"
4) "MariaDB.org"
5) "MongoDB"
6) "MongoDB.org"
# ...

website?鍵的底層實(shí)現(xiàn)就是一個(gè)字典, 字典中包含了?10086?個(gè)鍵值對(duì):

  • 其中一個(gè)鍵值對(duì)的鍵為?"Redis"?, 值為?"Redis.io"?。
  • 另一個(gè)鍵值對(duì)的鍵為?"MariaDB"?, 值為?"MariaDB.org"?;
  • 還有一個(gè)鍵值對(duì)的鍵為?"MongoDB"?, 值為?"MongoDB.org"?;

諸如此類。

除了用來(lái)實(shí)現(xiàn)數(shù)據(jù)庫(kù)和哈希鍵之外, Redis 的不少功能也用到了字典, 在后續(xù)的章節(jié)中會(huì)不斷地看到字典在 Redis 中的各種不同應(yīng)用。

本章接下來(lái)的內(nèi)容將對(duì) Redis 的字典實(shí)現(xiàn)進(jìn)行詳細(xì)的介紹, 并列出字典的操作 API 。

本章不會(huì)對(duì)字典的基本定義和基礎(chǔ)算法進(jìn)行介紹, 如果有需要的話, 可以參考以下這些資料:

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

掃描二維碼

下載編程獅App

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

編程獅公眾號(hào)