您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關redis默認建立16個數據庫的原因的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
在實際的開發工作中,我們通常會使用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 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的“數據庫”概念
由于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個數據庫的原因”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。