溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

redis默認(rèn)建立16個(gè)數(shù)據(jù)庫(kù)的原因

發(fā)布時(shí)間:2021-02-25 13:05:03 來源:億速云 閱讀:287 作者:小新 欄目:關(guān)系型數(shù)據(jù)庫(kù)

這篇文章給大家分享的是有關(guān)redis默認(rèn)建立16個(gè)數(shù)據(jù)庫(kù)的原因的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來看看吧。

在實(shí)際的開發(fā)工作中,我們通常會(huì)使用redis數(shù)據(jù)庫(kù)做緩存、分布式鎖/消息隊(duì)列等。但是我們通常會(huì)有這樣一個(gè)疑問,為什么在搭建配置好redis服務(wù)器之后,默認(rèn)建立了16個(gè)數(shù)據(jù)庫(kù)?

下面我們就來為大家介紹一下這個(gè)疑問。

redis默認(rèn)建立16個(gè)數(shù)據(jù)庫(kù)的原因

一、16個(gè)數(shù)據(jù)庫(kù)的由來

redis是一個(gè)字典結(jié)構(gòu)的存儲(chǔ)服務(wù)器,一個(gè)redis實(shí)例提供了多個(gè)用來存儲(chǔ)數(shù)據(jù)的字典,客戶端可以指定將數(shù)據(jù)存儲(chǔ)在哪個(gè)字典中。這與在一個(gè)關(guān)系數(shù)據(jù)庫(kù)實(shí)例中可以創(chuàng)建多個(gè)數(shù)據(jù)庫(kù)類似(如下圖所示),所有 可以將其中的每個(gè)字典都理解成一個(gè)獨(dú)立的數(shù)據(jù)庫(kù)。

redis默認(rèn)建立16個(gè)數(shù)據(jù)庫(kù)的原因

redis默認(rèn)支持16個(gè)數(shù)據(jù)庫(kù),可以通過調(diào)整redis的配置文件redis/redis.conf中的databases來修改這一個(gè)值,設(shè)置完畢后重啟redis便完成配置。

redis默認(rèn)建立16個(gè)數(shù)據(jù)庫(kù)的原因

客戶端與redis建立鏈接后會(huì)默認(rèn)選擇0號(hào)數(shù)據(jù)庫(kù),不過可以隨時(shí)使用select命令更換數(shù)據(jù)庫(kù)。

# 切換數(shù)據(jù)庫(kù)操作:切換到1
127.0.0.1:6379> SELECT 1
OK
127.0.0.1:6379[1]>
127.0.0.1:6379[1]>
# 切換到0
127.0.0.1:6379[1]> SELECT 0
OK
127.0.0.1:6379>
# 從1號(hào)庫(kù)中獲取username
127.0.0.1:6379[1]> get username 。

(學(xué)習(xí)視頻分享:redis視頻教程)

在實(shí)際項(xiàng)目中則可以通過以redis配置文件的形式指定數(shù)據(jù)庫(kù),如下圖所示

redis默認(rèn)建立16個(gè)數(shù)據(jù)庫(kù)的原因

二、正確理解redis的“數(shù)據(jù)庫(kù)”概念

由于redis不支持自定義數(shù)據(jù)庫(kù)的名字,所有每個(gè)數(shù)據(jù)庫(kù)都以編號(hào)命名。開發(fā)者則需要自己記錄存儲(chǔ)的數(shù)據(jù)與數(shù)據(jù)庫(kù)的對(duì)應(yīng)關(guān)系。另外redis也不支持為每個(gè)數(shù)據(jù)庫(kù)設(shè)置不同的訪問密碼,所有一個(gè)客戶端要么可以訪問全部數(shù)據(jù)庫(kù),要么全部數(shù)據(jù)庫(kù)都沒有權(quán)限訪問。要正確理解redis的“數(shù)據(jù)庫(kù)”概念,不得不提到一個(gè)命令:
清空redis實(shí)例中所有數(shù)據(jù)庫(kù)中的數(shù)據(jù)
127.0.0.1:6379> FLUSH ALL
清空redis某個(gè)數(shù)據(jù)庫(kù)中數(shù)據(jù) 不會(huì)清空其他庫(kù)的數(shù)據(jù)
127.0.0.1:6379> FLUSH db0
該命令可以清空實(shí)例下的所有數(shù)據(jù)庫(kù)數(shù)據(jù),這與我們所熟知的關(guān)系型數(shù)據(jù)庫(kù)所不同。關(guān)系型數(shù)據(jù)庫(kù)多個(gè)庫(kù)常用于存儲(chǔ)不同應(yīng)用程序的數(shù)據(jù),且沒有方式可以同時(shí)清空實(shí)例下的所有庫(kù)數(shù)據(jù)。所有對(duì)于redis來說這些db更像是一種命名空間,且不適宜存儲(chǔ)不同應(yīng)用程序的數(shù)據(jù)。比如可以使用0號(hào)數(shù)據(jù)庫(kù)存儲(chǔ)開發(fā)環(huán)境中的數(shù)據(jù),使用1號(hào)數(shù)據(jù)庫(kù)存儲(chǔ)測(cè)試環(huán)境中的數(shù)據(jù),但不適宜使用0號(hào)數(shù)據(jù)庫(kù)存儲(chǔ)A應(yīng)用的數(shù)據(jù)而使用1號(hào)數(shù)據(jù)庫(kù)存儲(chǔ)B應(yīng)用的數(shù)據(jù),不同的環(huán)境應(yīng)該使用不同的redis實(shí)例存儲(chǔ)數(shù)據(jù)。redis非常輕量,一個(gè)空的redis實(shí)例占用的內(nèi)在只有1M左右,所有不用擔(dān)心多個(gè)redis實(shí)例會(huì)額外占用很多內(nèi)存。

三、集群情況下是否支持一個(gè)實(shí)例多個(gè)db?

以上所說的都是基于單體redis的情況。而在集群的情況下不支持使用select命令來切換db,因?yàn)閞edis集群模式下只有一個(gè)db0

感謝各位的閱讀!關(guān)于“redis默認(rèn)建立16個(gè)數(shù)據(jù)庫(kù)的原因”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI