Redis是一個字典結構的儲存伺服器,而實際上一個Redis實例提供了多個用來儲存資料的字典,客戶端可以指定將資料儲存在哪個字典中。這與我們熟知的在一個關係資料庫實例中可以建立多個資料庫類似,所以可以將其中的每個字典理解成一個獨立的資料庫。
每個資料庫對外都是一個從0開始的遞增數字命名,Redis預設支援16個資料庫(可以透過設定檔支援更多,無上限),可以透過配置databases來修改這一數字。用戶端與Redis建立連線後會自動選擇0號資料庫,不過可以隨時使用SELECT指令更換資料庫,如要選擇1號資料庫:
redis> SELECT 1 OK redis [1] > GET foo (nil)
然而這些以數位命名的資料庫又與我們理解的資料庫有所區別。首先Redis不支援自訂資料庫的名字,每個資料庫都以編號命名,開發者必須自行記錄哪些資料庫儲存了哪些資料。另外Redis也不支援為每個資料庫設定不同的存取密碼,所以一個客戶端要嘛可以存取全部資料庫,要嘛連一個資料庫也沒有權限存取。最重要的一點是多個資料庫之間並不是完全隔離的,例如FLUSHALL指令可以清空一個Redis實例中所有資料庫中的資料。綜上所述,這些資料庫更像是一種命名空間,而不適合儲存不同應用程式的資料。例如可以使用0號資料庫儲存某個應用程式生產環境中的數據,使用1號資料庫儲存測試環境中的數據,但不適宜使用0號資料庫儲存A應用的資料而使用1號資料庫B應用的數據,不同的應用應該使用不同的Redis實例來儲存資料。由於Redis非常輕量級,一個空Redis實例佔用的內在只有1M左右,所以不用擔心多個Redis實例會額外佔用很多記憶體。
redis下,資料庫是由一個整數索引標識,而不是由一個資料庫名稱。 預設情況下,一個客戶端連接到資料庫0。 redis設定檔中下面的參數來控制資料庫總數:
/etc/redis/redis.conf
檔案中,有個設定項 databases = 16 //預設有16個資料庫
以上是redis有幾個函式庫的詳細內容。更多資訊請關注PHP中文網其他相關文章!