久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

Redis為什么默認(rèn)16個數(shù)據(jù)庫

683次閱讀
沒有評論

共計 1596 個字符,預(yù)計需要花費 4 分鐘才能閱讀完成。

今天就跟大家聊聊有關(guān) Redis 為什么默認(rèn) 16 個數(shù)據(jù)庫,可能很多人都不太了解,為了讓大家更加了解,丸趣 TV 小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

在實際項目中 Redis 常被應(yīng)用于做緩存,分布式鎖、消息隊列等。但是在搭建配置好 Redis 服務(wù)器后很多朋友應(yīng)該會發(fā)現(xiàn)和有這樣的疑問,為什么 Redis 默認(rèn)建立了 16 個數(shù)據(jù)庫,如下圖所示。

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

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

以 MySQL 實例為例

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

客戶端與 Redis 建立連接后會默認(rèn)選擇 0 號數(shù)據(jù)庫,不過可以隨時使用 SELECT 命令更換數(shù)據(jù)庫。

#  切庫  redis  SELECT 1 #  默認(rèn) 0 號 db,切換為 1 號 db OK redis [1]   GET username #  從 1 號庫中獲取  username (nil)

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

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

由于 Redis 不支持自定義數(shù)據(jù)庫的名字,所以每個數(shù)據(jù)庫都以編號命名。開發(fā)者則需要自己記錄存儲的數(shù)據(jù)與數(shù)據(jù)庫的對應(yīng)關(guān)系。另外 Redis 也不支持為每個數(shù)據(jù)庫設(shè)置不同的訪問密碼,所以一個客戶端要么可以訪問全部數(shù)據(jù)庫,要么全部數(shù)據(jù)庫都沒有權(quán)限訪問。但是,要正確地理解 Redis 的“數(shù)據(jù)庫”概念這里不得不提到一個命令:

#  清空一個 Redis 實例中所有數(shù)據(jù)庫中的數(shù)據(jù)  redis 127.0.0.1:6379  FLUSHALL

該命令可以清空實例下的所有數(shù)據(jù)庫數(shù)據(jù),這與我們所熟知的關(guān)系型數(shù)據(jù)庫所不同。關(guān)系型數(shù)據(jù)庫多個庫常用于存儲不同應(yīng)用程序的數(shù)據(jù)  ,且沒有方式可以同時清空實例下的所有庫數(shù)據(jù)。所以對于 Redis 來說這些 db 更像是一種命名空間,且不適宜存儲不同應(yīng)用程序的數(shù)據(jù)。比如可以使用 0 號數(shù)據(jù)庫存儲某個應(yīng)用生產(chǎn)環(huán)境中的數(shù)據(jù),使用 1 號數(shù)據(jù)庫存儲測試環(huán)境中的數(shù)據(jù),但不適宜使用 0 號數(shù)據(jù)庫存儲 A 應(yīng)用的數(shù)據(jù)而使用 1 號數(shù)據(jù)庫 B 應(yīng)用的數(shù)據(jù),不同的應(yīng)用應(yīng)該使用不同的 Redis 實例存儲數(shù)據(jù)。Redis 非常輕量級,一個空 Redis 實例占用的內(nèi)在只有 1M 左右,所以不用擔(dān)心多個 Redis 實例會額外占用很多內(nèi)存。

三、集群情況下是否支持一個實例多個 db?

要注意以上所說的都是基于單體 Redis 的情況。而在集群的情況下不支持使用 select 命令來切換 db,因為 Redis 集群模式下只有一個 db0。再擴(kuò)展一些集群與單機 Reids 的區(qū)別,感興趣的朋友可以去查閱相關(guān)的資料深入理解,這里就不做討論了。

key 批量操作支持有限:例如 mget、mset 必須在一個 slot

Key 事務(wù)和 Lua 支持有限:操作的 key 必須在一個節(jié)點

key 是數(shù)據(jù)分區(qū)的最小粒度:不支持 bigkey 分區(qū)

不支持多個數(shù)據(jù)庫:集群模式下只有一個 db0

復(fù)制只支持一層:不支持樹形復(fù)制結(jié)構(gòu)

四、總結(jié)

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

看完上述內(nèi)容,你們對 Redis 為什么默認(rèn) 16 個數(shù)據(jù)庫有進(jìn)一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注丸趣 TV 行業(yè)資訊頻道,感謝大家的支持。

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2023-07-18發(fā)表,共計1596字。
轉(zhuǎn)載說明:除特殊說明外本站除技術(shù)相關(guān)以外文章皆由網(wǎng)絡(luò)搜集發(fā)布,轉(zhuǎn)載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 抚州市| 岑溪市| 墨江| 固镇县| 焉耆| 从江县| 潜山县| 鄱阳县| 绩溪县| 霍林郭勒市| 鹤岗市| 镶黄旗| 剑阁县| 聊城市| 报价| 崇州市| 五原县| 新源县| 伊川县| 灵台县| 肇东市| 东平县| 江油市| 祁连县| 定南县| 义马市| 万源市| 营山县| 琼结县| 临西县| 古交市| 塘沽区| 九台市| 肃宁县| 彰化县| 中山市| 乐业县| 德惠市| 贵州省| 怀远县| 南宁市|