天天看點

Redis多個資料庫

注意:Redis支援多個資料庫,并且每個資料庫的資料是隔離的不能共享,并且基于單機才有,如果是叢集就沒有資料庫的概念。

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執行個體會額外占用很多記憶體。

參考:

http://www.ttlsa.com/redis/redis-database/

http://blog.csdn.net/qian_348840260/article/details/25056397(以上内容轉自此篇文章)

繼續閱讀