Redis16個資料庫都是什麼?
在實際專案中Redis常被應用於做快取,分散式鎖、訊息佇列等。但是在搭建配置好Redis伺服器後很多朋友應該會發現和有這樣的疑問,為什麼Redis預設建立了16個資料庫? |
在實際專案中Redis常被應用於做快取,分散式鎖、訊息佇列等。但是在搭建配置好Redis伺服器後很多朋友應該會發現和有這樣的疑問,為什麼Redis預設建立了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 127.0.0.1:6379> FLUSHALL
該命令可以清空例項下的所有資料庫資料,這與我們所熟知的關係型資料庫所不同。關係型資料庫多個庫常用於儲存不同應用程式的資料 ,且沒有方式可以同時清空例項下的所有庫資料。所以對於Redis來說這些db更像是一種名稱空間,且不適宜儲存不同應用程式的資料。比如可以使用0號資料庫儲存某個應用生產環境中的資料,使用1號資料庫儲存測試環境中的資料,但不適宜使用0號資料庫儲存A應用的資料而使用1號資料庫B應用的資料,不同的應用應該使用不同的Redis例項儲存資料。Redis非常輕量級,一個空Redis例項佔用的內在只有1M左右,所以不用擔心多個Redis例項會額外佔用很多記憶體。
要注意以上所說的都是基於單體Redis的情況。而在叢集的情況下不支援使用select命令來切換db,因為Redis叢集模式下只有一個db0。再擴充套件一些叢集與單機Reids的區別,感興趣的朋友可以去查閱相關的資料深入理解,這裡就不做討論了。
- key批量操作支援有限:例如mget、mset必須在一個slot
- Key事務和Lua支援有限:操作的key必須在一個節點
- key是資料分割槽的最小粒度:不支援bigkey分割槽
- 不支援多個資料庫:叢集模式下只有一個db0
- 複製只支援一層:不支援樹形複製結構
Redis例項預設建立了16個db,由於不支援自主進行資料庫命名所以以dbX的方式命名。預設資料庫數量可以修改配置檔案的database值來設定。對於db正確的理解應為“名稱空間”,多個應用程式不應使用同一個Redis不同庫,而應一個應用程式對應一個Redis例項,不同的資料庫可用於儲存不同環境的資料。最後要注意,Redis叢集下只有db0,不支援多db。
原文地址: https://www.linuxprobe.com/redis-16-mysql.html
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559985/viewspace-2666322/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【資料庫】簡單聊聊資料庫可以做什麼,有什麼用?資料庫
- 【資料庫】雲資料庫rds是什麼意思?有什麼優勢?資料庫
- 雲資料庫RDS是什麼?雲資料庫RDS有什麼優勢?資料庫
- Chronicles 是什麼資料庫資料庫
- 什麼是皇帝資料庫?資料庫
- django用什麼資料庫Django資料庫
- 什麼是Cassandra資料庫資料庫
- 請問這個資料庫統計資訊是什麼,資料庫
- 穀雨資料:北京住別墅的都是什麼人?
- 資料庫倉庫系列:(一)什麼是資料倉儲,為什麼要資料倉儲資料庫
- MySQL資料庫是什麼?linux資料庫運維MySql資料庫Linux運維
- 織夢需要什麼資料庫織夢資料庫在哪資料庫
- 什麼是資料庫檢視?資料庫
- 【TcaplusDB知識庫】什麼是TcaplusDB資料庫?資料庫
- 資料庫mysql儲存是什麼?可以存什麼?資料庫MySql
- 資料庫審計是什麼意思?作用是什麼?資料庫
- 資料庫:外來鍵是什麼資料庫
- PG資料庫為什麼要用autovacuum資料庫
- 到底什麼是雲原生資料庫?資料庫
- 傳統OLTP資料庫存什麼?資料庫
- 什麼是真正的自治資料庫?資料庫
- 為什麼標準庫的模板變數都是inline的變數inline
- 國產資料庫市場橫空殺出個巨頭?亞信 AntDB資料庫憑什麼資料庫
- 為什麼DBA需要資料庫廠商的資料庫概念文件資料庫
- 為什麼大批的JAVA程式設計師都是在轉大資料Java程式設計師大資料
- 大資料、人工智慧、機器學習與深度學習都是什麼?有什麼關係?大資料人工智慧機器學習深度學習
- 資料庫DBA為什麼拒絕DevOps?資料庫dev
- ChatGPT與資料庫能擦出什麼火花ChatGPT資料庫
- 帝國cms配置資料庫是什麼資料庫
- SQL、Mysql、資料庫到底什麼關係MySql資料庫
- flask資料庫遷移是什麼意思Flask資料庫
- MySQL資料庫的優勢是什麼?MySql資料庫
- 為什麼NoSQL資料庫這麼受歡迎?SQL資料庫
- 資料庫是什麼意思?有什麼用?有哪些型別?資料庫型別
- 戈小羊:為什麼我們都是大資料時代的“統計文盲”?大資料
- Web 2.0 和 Web 3.0 都是什麼意思?哪一個更好?Web
- SaaS,PaaS,IaaS都是什麼鬼
- 什麼是騰訊雲資料庫 CynosDB?雲資料庫 TencentDB for CynosDB 的特性資料庫