日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

看完后,我才明白 Redis 为什么默认 16 个数据库?

發(fā)布時(shí)間:2025/3/20 数据库 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 看完后,我才明白 Redis 为什么默认 16 个数据库? 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

點(diǎn)擊上方?好好學(xué)java?,選擇?星標(biāo)?公眾號(hào)

重磅資訊、干貨,第一時(shí)間送達(dá)

今日推薦:硬剛一周,3W字總結(jié),一年的經(jīng)驗(yàn)告訴你如何準(zhǔn)備校招!

個(gè)人原創(chuàng)100W+訪問(wèn)量博客:點(diǎn)擊前往,查看更多

來(lái)源:toutiao.com/a6752317753866060299

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

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

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

  • 四、總結(jié)

導(dǎo)讀:在實(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ù)類似(如下圖所示),所以可以將其中的每個(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ù)。

在實(shí)際項(xiàng)目中則可以通過(guò)以Redis配置文件的形式指定數(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è)置不同的訪問(wèn)密碼,所以一個(gè)客戶端要么可以訪問(wèn)全部數(shù)據(jù)庫(kù),要么全部數(shù)據(jù)庫(kù)都沒(méi)有權(quán)限訪問(wèn)。但是,要正確地理解Redis的“數(shù)據(jù)庫(kù)”概念這里不得不提到一個(gè)命令:

該命令可以清空實(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ù)制只支持一層:不支持樹形復(fù)制結(jié)構(gòu)

四、總結(jié)

Redis實(shí)例默認(rèn)建立了16個(gè)db,由于不支持自主進(jìn)行數(shù)據(jù)庫(kù)命名所以以dbX的方式命名。默認(rèn)數(shù)據(jù)庫(kù)數(shù)量可以修改配置文件的database值來(lái)設(shè)定。對(duì)于db正確的理解應(yīng)為“命名空間”,多個(gè)應(yīng)用程序不應(yīng)使用同一個(gè)Redis不同庫(kù),而應(yīng)一個(gè)應(yīng)用程序?qū)?yīng)一個(gè)Redis實(shí)例,不同的數(shù)據(jù)庫(kù)可用于存儲(chǔ)不同環(huán)境的數(shù)據(jù)。最后要注意,Redis集群下只有db0,不支持多db。

推薦文章

  • 硬剛一周,3W字總結(jié),一年的經(jīng)驗(yàn)告訴你如何準(zhǔn)備校招!

  • 今年的校招,Java 好拿 offer 嗎?

  • 10月了,該聊聊今年秋招了!

  • 聊聊在騰訊實(shí)習(xí)快一個(gè)月的感受

原創(chuàng)電子書歷時(shí)整整一年總結(jié)的?Java 面試 + Java 后端技術(shù)學(xué)習(xí)指南,這是本人這幾年及校招的總結(jié),各種高頻面試題已經(jīng)全部進(jìn)行總結(jié),按照章節(jié)復(fù)習(xí)即可,已經(jīng)拿到了大廠offer。 原創(chuàng)思維導(dǎo)圖掃碼或者微信搜?程序員的技術(shù)圈子?回復(fù)?面試?領(lǐng)取原創(chuàng)電子書和思維導(dǎo)圖。

總結(jié)

以上是生活随笔為你收集整理的看完后,我才明白 Redis 为什么默认 16 个数据库?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。