首頁  >  文章  >  資料庫  >  redis為什麼預設建立16個資料庫

redis為什麼預設建立16個資料庫

王林
王林轉載
2021-02-25 09:17:512737瀏覽

redis為什麼預設建立16個資料庫

在實際的開發工作中,我們通常會使用redis資料庫做快取、分散式鎖定/訊息佇列等。但我們通常會有這樣一個疑問,為什麼在建立配置好redis伺服器之後,預設建立了16個資料庫?

下面我們就來為大家介紹一下這個疑問。

redis為什麼預設建立16個資料庫

一、16個資料庫的由來

redis是一個字典結構的儲存伺服器,一個redis實例提供了多個用來儲存資料的字典,客戶端可以指定將資料儲存在哪個字典中。這與在一個關聯式資料庫實例中可以建立多個資料庫類似(如下圖所示),所有 可以將其中的每個字典都理解成一個獨立的資料庫。

redis為什麼預設建立16個資料庫

redis預設支援16個資料庫,可以透過調整redis的設定檔redis/redis.conf中的databases來修改這個值,設定完畢後重新啟動redis就完成配置。

redis為什麼預設建立16個資料庫

客戶端與redis建立連結後會預設選擇0號資料庫,不過可以隨時使用select指令更換資料庫。

# 切换数据库操作:切换到1
127.0.0.1:6379> SELECT 1
OK
127.0.0.1:6379[1]>
127.0.0.1:6379[1]>
# 切换到0
127.0.0.1:6379[1]> SELECT 0
OK
127.0.0.1:6379>
# 从1号库中获取username
127.0.0.1:6379[1]> get username 。

(學習影片分享:redis影片教學

在實際專案中則可以透過以redis設定檔的形式指定資料庫,如下圖所示

redis為什麼預設建立16個資料庫

二、正確理解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資料庫教學

#

以上是redis為什麼預設建立16個資料庫的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:csdn.net。如有侵權,請聯絡admin@php.cn刪除