共計 1404 個字符,預計需要花費 4 分鐘才能閱讀完成。
自動寫代碼機器人,免費開通
這篇文章給大家分享的是有關 redis 默認建立 16 個數據庫的原因的內容。丸趣 TV 小編覺得挺實用的,因此分享給大家做個參考,一起跟隨丸趣 TV 小編過來看看吧。
在實際的開發工作中,我們通常會使用 redis 數據庫做緩存、分布式鎖 / 消息隊列等。但是我們通常會有這樣一個疑問,為什么在搭建配置好 redis 服務器之后,默認建立了 16 個數據庫?
下面我們就來為大家介紹一下這個疑問。
一、16 個數據庫的由來
redis 是一個字典結構的存儲服務器,一個 redis 實例提供了多個用來存儲數據的字典,客戶端可以指定將數據存儲在哪個字典中。這與在一個關系數據庫實例中可以創建多個數據庫類似(如下圖所示),所有 可以將其中的每個字典都理解成一個獨立的數據庫。
redis 默認支持 16 個數據庫,可以通過調整 redis 的配置文件 redis/redis.conf 中的 databases 來修改這一個值,設置完畢后重啟 redis 便完成配置。
客戶端與 redis 建立鏈接后會默認選擇 0 號數據庫,不過可以隨時使用 select 命令更換數據庫。
# 切換數據庫操作:切換到 1
127.0.0.1:6379 SELECT 1
127.0.0.1:6379[1]
127.0.0.1:6379[1]
# 切換到 0
127.0.0.1:6379[1] SELECT 0
127.0.0.1:6379
# 從 1 號庫中獲取 username
127.0.0.1:6379[1] get username 。
(學習視頻分享:redis 視頻教程)
在實際項目中則可以通過以 redis 配置文件的形式指定數據庫,如下圖所示
二、正確理解 redis 的“數據庫”概念
由于 redis 不支持自定義數據庫的名字,所有每個數據庫都以編號命名。開發者則需要自己記錄存儲的數據與數據庫的對應關系。另外 redis 也不支持為每個數據庫設置不同的訪問密碼,所有一個客戶端要么可以訪問全部數據庫,要么全部數據庫都沒有權限訪問。要正確理解 redis 的“數據庫”概念,不得不提到一個命令:
清空 redis 實例中所有數據庫中的數據
127.0.0.1:6379 FLUSH ALL
清空 redis 某個數據庫中數據 不會清空其他庫的數據
127.0.0.1:6379 FLUSH db0
該命令可以清空實例下的所有數據庫數據,這與我們所熟知的關系型數據庫所不同。關系型數據庫多個庫常用于存儲不同應用程序的數據,且沒有方式可以同時清空實例下的所有庫數據。所有對于 redis 來說這些 db 更像是一種命名空間,且不適宜存儲不同應用程序的數據。比如可以使用 0 號數據庫存儲開發環境中的數據,使用 1 號數據庫存儲測試環境中的數據,但不適宜使用 0 號數據庫存儲 A 應用的數據而使用 1 號數據庫存儲 B 應用的數據,不同的環境應該使用不同的 redis 實例存儲數據。redis 非常輕量,一個空的 redis 實例占用的內在只有 1M 左右,所有不用擔心多個 redis 實例會額外占用很多內存。
三、集群情況下是否支持一個實例多個 db?
以上所說的都是基于單體 redis 的情況。而在集群的情況下不支持使用 select 命令來切換 db,因為 redis 集群模式下只有一個 db0
感謝各位的閱讀!關于“redis 默認建立 16 個數據庫的原因”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
向 AI 問一下細節