這篇文章主要講解了“Redis為什么默認(rèn)建立16個(gè)數(shù)據(jù)庫(kù)”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“Redis為什么默認(rèn)建立16個(gè)數(shù)據(jù)庫(kù)”吧!
定海ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書(shū)未來(lái)市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)公司的ssl證書(shū)銷(xiāo)售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:028-86922220(備注:SSL證書(shū)合作)期待與您的合作!在實(shí)際項(xiàng)目中Redis常被應(yīng)用于做緩存,分布式鎖、消息隊(duì)列等。但是在搭建配置好Redis服務(wù)器后很多朋友應(yīng)該會(huì)發(fā)現(xiàn)和有這樣的疑問(wèn),為什么Redis默認(rèn)建立了16個(gè)數(shù)據(jù)庫(kù)? |
在實(shí)際項(xiàng)目中Redis常被應(yīng)用于做緩存,分布式鎖、消息隊(duì)列等。但是在搭建配置好Redis服務(wù)器后很多朋友應(yīng)該會(huì)發(fā)現(xiàn)和有這樣的疑問(wèn),為什么Redis默認(rèn)建立了16個(gè)數(shù)據(jù)庫(kù),如下圖所示。
一、16個(gè)數(shù)據(jù)庫(kù)的由來(lái)
Redis是一個(gè)字典結(jié)構(gòu)的存儲(chǔ)服務(wù)器,一個(gè)Redis實(shí)例提供了多個(gè)用來(lái)存儲(chǔ)數(shù)據(jù)的字典,客戶端可以指定將數(shù)據(jù)存儲(chǔ)在哪個(gè)字典中。這與在一個(gè)關(guān)系數(shù)據(jù)庫(kù)實(shí)例中可以創(chuàng)建多個(gè)數(shù)據(jù)庫(kù)類(lèi)似(如下圖所示),所以可以將其中的每個(gè)字典都理解成一個(gè)獨(dú)立的數(shù)據(jù)庫(kù)。
以MySQL實(shí)例為例
Redis默認(rèn)支持16個(gè)數(shù)據(jù)庫(kù),可以通過(guò)調(diào)整Redis的配置文件redis/redis.conf中的databases來(lái)修改這一個(gè)值,設(shè)置完畢后重啟Redis便完成配置。
客戶端與Redis建立連接后會(huì)默認(rèn)選擇0號(hào)數(shù)據(jù)庫(kù),不過(guò)可以隨時(shí)使用SELECT 命令更換數(shù)據(jù)庫(kù)。
# 切庫(kù) redis> SELECT 1 # 默認(rèn)0號(hào)db,切換為1號(hào)db OK redis [1] > GET username # 從1號(hào)庫(kù)中獲取 username (nil)
在實(shí)際項(xiàng)目中則可以通過(guò)以Redis配置文件的形式指定數(shù)據(jù)庫(kù),如下圖所示
二、正確理解Redis的“數(shù)據(jù)庫(kù)”概念
由于Redis不支持自定義數(shù)據(jù)庫(kù)的名字,所以每個(gè)數(shù)據(jù)庫(kù)都以編號(hào)命名。開(kāi)發(fā)者則需要自己記錄存儲(chǔ)的數(shù)據(jù)與數(shù)據(jù)庫(kù)的對(duì)應(yīng)關(guān)系。另外Redis也不支持為每個(gè)數(shù)據(jù)庫(kù)設(shè)置不同的訪問(wèn)密碼,所以一個(gè)客戶端要么可以訪問(wèn)全部數(shù)據(jù)庫(kù),要么全部數(shù)據(jù)庫(kù)都沒(méi)有權(quán)限訪問(wèn)。但是,要正確地理解Redis的“數(shù)據(jù)庫(kù)”概念這里不得不提到一個(gè) 命令:
# 清空一個(gè)Redis實(shí)例中所有數(shù)據(jù)庫(kù)中的數(shù)據(jù) redis 127.0.0.1:6379> FLUSHALL
該命令可以清空實(shí)例下的所有數(shù)據(jù)庫(kù)數(shù)據(jù),這與我們所熟知的關(guān)系型數(shù)據(jù)庫(kù)所不同。關(guān)系型數(shù)據(jù)庫(kù)多個(gè)庫(kù)常用于存儲(chǔ)不同應(yīng)用程序的數(shù)據(jù) ,且沒(méi)有方式可以同時(shí)清空實(shí)例下的所有庫(kù)數(shù)據(jù)。所以對(duì)于Redis來(lái)說(shuō)這些db更像是一種命名空間,且不適宜存儲(chǔ)不同應(yīng)用程序的數(shù)據(jù)。比如可以使用0號(hào)數(shù)據(jù)庫(kù)存儲(chǔ)某個(gè)應(yīng)用生產(chǎn)環(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ù)B應(yīng)用的數(shù)據(jù),不同的應(yīng)用應(yīng)該使用不同的Redis實(shí)例存儲(chǔ)數(shù)據(jù)。Redis非常輕量級(jí),一個(gè)空Redis實(shí)例占用的內(nèi)在只有1M左右,所以不用擔(dān)心多個(gè)Redis實(shí)例會(huì)額外占用很多內(nèi)存。
三、集群情況下是否支持一個(gè)實(shí)例多個(gè)db?
要注意以上所說(shuō)的都是基于單體Redis的情況。而在集群的情況下不支持使用select命令來(lái)切換db,因?yàn)镽edis集群模式下只有一個(gè)db0。再擴(kuò)展一些集群與單機(jī)Reids的區(qū)別,感興趣的朋友可以去查閱相關(guān)的資料深入理解,這里就不做討論了。
key批量操作支持有限:例如mget、mset必須在一個(gè)slot
Key事務(wù)和Lua支持有限:操作的key必須在一個(gè)節(jié)點(diǎn)
key是數(shù)據(jù)分區(qū)的最小粒度:不支持bigkey分區(qū)
不支持多個(gè)數(shù)據(jù)庫(kù):集群模式下只有一個(gè)db0
復(fù)制只支持一層:不支持樹(shù)形復(fù)制結(jié)構(gòu)
感謝各位的閱讀,以上就是“Redis為什么默認(rèn)建立16個(gè)數(shù)據(jù)庫(kù)”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)Redis為什么默認(rèn)建立16個(gè)數(shù)據(jù)庫(kù)這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!
網(wǎng)站標(biāo)題:Redis為什么默認(rèn)建立16個(gè)數(shù)據(jù)庫(kù)-創(chuàng)新互聯(lián)
文章鏈接:http://aaarwkj.com/article20/ccphco.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、App設(shè)計(jì)、網(wǎng)站營(yíng)銷(xiāo)、網(wǎng)站改版、虛擬主機(jī)、響應(yīng)式網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容