redis如何設置database個數

redis設置database個數

今天連公司數據庫,發現db達到255個,不知道為什麼,其實是256個從0開始的

在這裡插入圖片描述

而我自己的隻有16個

在這裡插入圖片描述

我是windows的,linux是一樣的,目錄結構如圖:

在這裡插入圖片描述

編輯redis.conf配置文件,搜索database,可以找到:

databases 16

如圖:

在這裡插入圖片描述

通過看簡單描述,我們大概知道: 最後一句話,意思是,初始的DB是0,(默認的是16),你能自己選擇一個數字來作為數據庫的大小,但是不能為0,大概就是這樣…我們可以通過修改16,來達到你想要的=-=…

註意:啟動需要指定的配置文件。可以通過命令行啟動,在當前文件夾下啟動命令行 redis-server.exe ./redis.conf;

我寫瞭個bat文件: start redis-server.exe redis.conf還是在當前文件就好瞭…

redis 多數據庫 database配置項解析

讀到redis配置文件的時候,碰到databases 16我不明白瞭,然後開啟百度和google的搜索介紹之門,下面把我讀取文章吸取到的解釋介紹如下。

官方的解釋:可用數據庫數,默認值為16,默認數據庫為0。

剛開始咋一看沒有明白,可用數據庫的個數,redis一個實例不就是一個數據庫嗎。怎麼還可以配置多個數據庫。這是因為Redis下,數據庫是由一個整數索引標識,而不是由一個數據庫名稱,可以直白的理解為配置不同的的庫,占用的是不同的內存空間,不同的庫之間相互不影響,獨立工作,隻不過都是借宿在這個Redis實例上面生存的空間。

Redis的配置文件中默認的數據庫總數為16個,默認它是一個下標基於0到15的數組:

databases 16

database.png

應用場景

為什麼Redis會有這麼一個設計場景呢,我想這是一個類似多租戶的概念。就像虛擬化和容器一樣,你可以虛擬出多臺機器和多個容器來,充分利用物理機器的硬件配置來work,達到服務器性能最大的利用率,各個虛擬機和容器之間單獨運行,互補影響和幹擾,我想Redis的多數據庫也是同樣的道理。

場景:

redisdatabase.png

你或許希望一個Redis應用(一個Redis server,或者一個Redis server/slaves群組)能為多個客戶端應用服務,如果這些客戶端應用都各自為營,向Redis寫數據的話,很可能會導致key沖突(我們知道Redis是一個key-value結構的存儲結構)。為瞭將不同的應用分開,你可以用不同的前綴去區分(eg: app_i:xx:yy, app_ii:xx:yy)。這時候你就不用這麼麻煩,就可以直接利用Redis分割這些key的機制:Database的概念。

每個數據庫都有屬於自己的空間,不必擔心之間的key沖突。

不同的數據庫下,相同的key取到各自的值。

flushdb.png

flushdb命令清除數據,隻會清除當前的數據庫下的數據,不會影響到其他數據庫。flushall命令會清除這個實例的數據,在執行這個命令之前要考慮清楚,我這裡隻是實驗環境,無所謂瞭。

數據庫的數量是可以配置的,默認情況下是16個。修改redis.conf下的databases指令:

databases 64

redis沒有提供任何方法來關聯標識不同的數據庫。因此,需要你來跟蹤什麼數據存儲到哪個數據庫下或者什麼業務的數據存在哪個庫裡面,這個我覺得可以用Zookeeper來解決。

總結

Redis databases,從“客戶端應用都各自為營”和業務分離的角度來看,Database的概念是很適用的,它讓我們有清晰的數據劃分,可以放心的把註意力放在key的設計上。

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。

推薦閱讀: