redis有多少個(gè)默認(rèn)db

redis支持多個(gè)數(shù)據(jù)庫,并且每個(gè)數(shù)據(jù)庫的數(shù)據(jù)是隔離的不能共享,并且基于單機(jī)才有,如果是集群就沒有數(shù)據(jù)庫的概念。

redis有多少個(gè)默認(rèn)db

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

每個(gè)數(shù)據(jù)庫對外都是一個(gè)從0開始的遞增數(shù)字命名,Redis默認(rèn)支持16個(gè)數(shù)據(jù)庫(可以通過配置文件支持更多,無上限),可以通過配置databases來修改這一數(shù)字。客戶端與Redis建立連接后會(huì)自動(dòng)選擇0號數(shù)據(jù)庫,不過可以隨時(shí)使用select命令更換數(shù)據(jù)庫,如要選擇1號數(shù)據(jù)庫:

redis>?SELECT?1 OK redis?[1]?>?GET?foo (nil)

然而這些以數(shù)字命名的數(shù)據(jù)庫又與我們理解的數(shù)據(jù)庫有所區(qū)別。首先Redis不支持自定義數(shù)據(jù)庫的名字,每個(gè)數(shù)據(jù)庫都以編號命名,開發(fā)者必須自己記錄哪些數(shù)據(jù)庫存儲(chǔ)了哪些數(shù)據(jù)。另外Redis也不支持為每個(gè)數(shù)據(jù)庫設(shè)置不同的訪問密碼,所以一個(gè)客戶端要么可以訪問全部數(shù)據(jù)庫,要么連一個(gè)數(shù)據(jù)庫也沒有權(quán)限訪問。最重要的一點(diǎn)是多個(gè)數(shù)據(jù)庫之間并不是完全隔離的,比如FLUSHALL命令可以清空一個(gè)Redis實(shí)例中所有數(shù)據(jù)庫中的數(shù)據(jù)。綜上所述,這些數(shù)據(jù)庫更像是一種命名空間,而不適宜存儲(chǔ)不同應(yīng)用程序的數(shù)據(jù)。比如可以使用0號數(shù)據(jù)庫存儲(chǔ)某個(gè)應(yīng)用生產(chǎn)環(huán)境中的數(shù)據(jù),使用1號數(shù)據(jù)庫存儲(chǔ)測試環(huán)境中的數(shù)據(jù),但不適宜使用0號數(shù)據(jù)庫存儲(chǔ)A應(yīng)用的數(shù)據(jù)而使用1號數(shù)據(jù)庫B應(yīng)用的數(shù)據(jù),不同的應(yīng)用應(yīng)該使用不同的Redis實(shí)例存儲(chǔ)數(shù)據(jù)。由于Redis非常輕量級,一個(gè)空Redis實(shí)例占用的內(nèi)在只有1M左右,所以不用擔(dān)心多個(gè)Redis實(shí)例會(huì)額外占用很多內(nèi)存。?

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊9 分享