93.7% 的程式設計師!竟然都不知道 Redis 為什麼預設16個資料庫?
▍導讀
在實際專案中Redis常被應用於做快取,分散式鎖、訊息佇列等。但是在搭建配置好Redis伺服器後很多朋友應該會發現和有這樣的疑問,為什麼Redis預設建立了16個資料庫,如下圖所示。
椐調查發現:93.7%的程式設計師!竟然都不知道Redis為什麼預設16個資料庫?
一、16個資料庫的由來
Redis是一個字典結構的儲存伺服器,一個Redis例項提供了多個用來儲存資料的字典,客戶端可以指定將資料儲存在哪個字典中。這與在一個關聯式資料庫例項中可以建立多個資料庫類似(如下圖所示),所以可以將其中的每個字典都理解成一個獨立的資料庫。
以MySQL例項為例
Redis預設支援16個資料庫,可以透過調整Redis的配置檔案redis/redis.conf中的databases來修改這一個值,設定完畢後重啟Redis便完成配置。
客戶端與Redis建立連線後會預設選擇0號資料庫,不過可以隨時使用SELECT命令更換資料庫。
# 切庫
redis> SELECT 1 # 預設0號db,切換為1號db
OK
redis [1] > GET username # 從1號庫中獲取 username
(nil)
在實際專案中則可以透過以Redis配置檔案的形式指定資料庫,如下圖所示
二、正確理解Redis的“資料庫”概念
由於Redis不支援自定義資料庫的名字,所以每個資料庫都以編號命名。開發者則需要自己記錄儲存的資料與資料庫的對應關係。另外Redis也不支援為每個資料庫設定不同的訪問密碼,所以一個客戶端要麼可以訪問全部資料庫,要麼全部資料庫都沒有許可權訪問。但是,要正確地理解Redis的“資料庫”概念這裡不得不提到一個命令:
# 清空一個Redis例項中所有資料庫中的資料
redis 127.0.0.1:6379> FLUSHALL
該命令可以清空例項下的所有資料庫資料,這與我們所熟知的關係型資料庫所不同。關係型資料庫多個庫常用於儲存不同應用程式的資料 ,且沒有方式可以同時清空例項下的所有庫資料。所以對於Redis來說這些db更像是一種名稱空間,且不適宜儲存不同應用程式的資料。比如可以使用0號資料庫儲存某個應用生產環境中的資料,使用1號資料庫儲存測試環境中的資料,但不適宜使用0號資料庫儲存A應用的資料而使用1號資料庫B應用的資料,不同的應用應該使用不同的Redis例項儲存資料。Redis非常輕量級,一個空Redis例項佔用的內在只有1M左右,所以不用擔心多個Redis例項會額外佔用很多記憶體。
三、叢集情況下是否支援一個例項多個db?
要注意以上所說的都是基於單體Redis的情況。而在叢集的情況下不支援使用select命令來切換db,因為Redis叢集模式下只有一個db0。再擴充套件一些叢集與單機Reids的區別,感興趣的朋友可以去查閱相關的資料深入理解,這裡就不做討論了。
key批次操作支援有限:例如mget、mset必須在一個slot Key事務和Lua支援有限:操作的key必須在一個節點 key是資料分割槽的最小粒度:不支援bigkey分割槽 不支援多個資料庫:叢集模式下只有一個db0 複製只支援一層:不支援樹形複製結構
四、總結
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31545820/viewspace-2670873/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 為什麼IT程式設計師都不願意重構程式碼?程式設計師
- 為什麼很多公司都不招大齡程式設計師?程式設計師
- 為什麼改元“令和”,竟然成了日本程式設計師的魔咒?程式設計師
- 為什麼很多人都不喜歡做程式設計師?程式設計師
- 面試一個6年 Java程式設計師,竟然問啥都不會!面試Java程式設計師
- 程式設計師工資高,但為什麼越來越多的人都不再願意做程式設計師呢?程式設計師
- Redis16個資料庫都是什麼?Redis資料庫
- 設計師為什麼要學程式設計,開發者為什麼要學設計?程式設計
- 程式設計師程式設計入門一定知道!程式設計師需要學什麼?程式設計師
- 為什麼程式設計師的工資那麼多!憑什麼?程式設計師
- 女程式設計師,為什麼比男程式設計師少???程式設計師
- 為什麼有的程式設計師不會程式設計?程式設計師
- 好程式設計師:為什麼很少見到工資高的程式設計師炫富程式設計師
- 同為程式設計師,為什麼我的工資最低?程式設計師
- 同為程式設計師 為什麼我的工資最低程式設計師
- 為什麼你作為一個.NET的程式設計師工資那麼低?程式設計師
- 大齡程式設計師經驗那麼豐富,為什麼很多公司都不招?程式設計師
- 程式設計師,為什麼如此迷茫?程式設計師
- 我為什麼是程式設計師?程式設計師
- 為什麼我害怕資料結構學得好的程式設計師?資料結構程式設計師
- 為什麼大批的JAVA程式設計師都是在轉大資料Java程式設計師大資料
- 為什麼程式設計師喜歡在深夜程式設計?程式設計師
- 同是程式設計師,為什麼我工資最低程式設計師
- 為什麼大資料工程師比Java程式設計師工資高大資料工程師Java程式設計師
- 為什麼要投資程式設計師的幸福?程式設計師
- 為什麼要成為「無敵」程式設計師?程式設計師
- Python 程式設計師應該知道的 10 個庫Python程式設計師
- 為什麼很少見工資高的程式設計師炫富?程式設計師
- 程式設計師你為什麼這麼累?程式設計師
- 程式設計師為什麼喜歡程式設計這項工作?程式設計師
- 程式設計師應該知道的 13 個設計技巧程式設計師
- 中國程式設計師為什麼要跳槽?程式設計師
- 程式設計師工資為什麼普遍很高,原來是因為這個...程式設計師
- 為什麼程式設計師在學習程式設計的時候什麼都記不住?程式設計師
- Java程式設計師應該知道的20個有用的庫Java程式設計師
- 為什麼程式設計師是一個偉大的職業程式設計師
- 為什麼開源可以提高程式設計師的程式設計技能?程式設計師
- 同樣是程式設計師 為什麼薪資不同程式設計師