共計 1576 個字符,預計需要花費 4 分鐘才能閱讀完成。
這篇文章主要講解了“Redis 為什么默認建立 16 個數(shù)據(jù)庫”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著丸趣 TV 小編的思路慢慢深入,一起來研究和學習“Redis 為什么默認建立 16 個數(shù)據(jù)庫”吧!
在實際項目中 Redis 常被應用于做緩存,分布式鎖、消息隊列等。但是在搭建配置好 Redis 服務器后很多朋友應該會發(fā)現(xiàn)和有這樣的疑問,為什么 Redis 默認建立了 16 個數(shù)據(jù)庫?
在實際項目中 Redis 常被應用于做緩存,分布式鎖、消息隊列等。但是在搭建配置好 Redis 服務器后很多朋友應該會發(fā)現(xiàn)和有這樣的疑問,為什么 Redis 默認建立了 16 個數(shù)據(jù)庫,如下圖所示。
一、16 個數(shù)據(jù)庫的由來
Redis 是一個字典結構的存儲服務器,一個 Redis 實例提供了多個用來存儲數(shù)據(jù)的字典,客戶端可以指定將數(shù)據(jù)存儲在哪個字典中。這與在一個關系數(shù)據(jù)庫實例中可以創(chuàng)建多個數(shù)據(jù)庫類似 (如下圖所示),所以可以將其中的每個字典都理解成一個獨立的數(shù)據(jù)庫。
以 MySQL 實例為例
Redis 默認支持 16 個數(shù)據(jù)庫,可以通過調整 Redis 的配置文件 redis/redis.conf 中的 databases 來修改這一個值,設置完畢后重啟 Redis 便完成配置。
客戶端與 Redis 建立連接后會默認選擇 0 號數(shù)據(jù)庫,不過可以隨時使用 SELECT
命令更換數(shù)據(jù)庫。
# 切庫
redis SELECT 1 # 默認 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ù)庫的對應關系。另外 Redis 也不支持為每個數(shù)據(jù)庫設置不同的訪問密碼,所以一個客戶端要么可以訪問全部數(shù)據(jù)庫,要么全部數(shù)據(jù)庫都沒有權限訪問。但是,要正確地理解 Redis 的“數(shù)據(jù)庫”概念這里不得不提到一個
命令:
# 清空一個 Redis 實例中所有數(shù)據(jù)庫中的數(shù)據(jù)
redis 127.0.0.1:6379 FLUSHALL
該命令可以清空實例下的所有數(shù)據(jù)庫數(shù)據(jù),這與我們所熟知的關系型數(shù)據(jù)庫所不同。關系型數(shù)據(jù)庫多個庫常用于存儲不同應用程序的數(shù)據(jù),且沒有方式可以同時清空實例下的所有庫數(shù)據(jù)。所以對于 Redis 來說這些 db 更像是一種命名空間,且不適宜存儲不同應用程序的數(shù)據(jù)。比如可以使用 0 號數(shù)據(jù)庫存儲某個應用生產(chǎn)環(huán)境中的數(shù)據(jù),使用 1 號數(shù)據(jù)庫存儲測試環(huán)境中的數(shù)據(jù),但不適宜使用 0 號數(shù)據(jù)庫存儲 A 應用的數(shù)據(jù)而使用 1 號數(shù)據(jù)庫 B 應用的數(shù)據(jù),不同的應用應該使用不同的 Redis 實例存儲數(shù)據(jù)。Redis 非常輕量級,一個空 Redis 實例占用的內在只有 1M 左右,所以不用擔心多個 Redis 實例會額外占用很多內存。
三、集群情況下是否支持一個實例多個 db?
要注意以上所說的都是基于單體 Redis 的情況。而在集群的情況下不支持使用 select 命令來切換 db,因為 Redis 集群模式下只有一個 db0。再擴展一些集群與單機 Reids 的區(qū)別,感興趣的朋友可以去查閱相關的資料深入理解,這里就不做討論了。
key 批量操作支持有限:例如 mget、mset 必須在一個 slot
Key 事務和 Lua 支持有限:操作的 key 必須在一個節(jié)點
key 是數(shù)據(jù)分區(qū)的最小粒度:不支持 bigkey 分區(qū)
不支持多個數(shù)據(jù)庫:集群模式下只有一個 db0
復制只支持一層:不支持樹形復制結構
感謝各位的閱讀,以上就是“Redis 為什么默認建立 16 個數(shù)據(jù)庫”的內容了,經(jīng)過本文的學習后,相信大家對 Redis 為什么默認建立 16 個數(shù)據(jù)庫這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是丸趣 TV,丸趣 TV 小編將為大家推送更多相關知識點的文章,歡迎關注!