redis為什么存在16個庫?
redis 為什么存在16個庫?這個問題在網(wǎng)上搜了一會兒,沒有搜到標準答案,很有可能時當時的開發(fā)者基于某種情況設(shè)置的一個數(shù)值,即默認情況下, redis 會生成 0-15號共16個db,以供不同場景的使用需求。不同的 db 下,相同的key各自獨立。
而我們可以通過修改 redis 的配置文件(redis.conf)來修改這種默認 db 的配置個數(shù)(修改配置文件后需重啟才能生效)
# redis 配置文件中
databases 16
在 redis-cli 下,通過 select 命令來切換數(shù)據(jù)庫
127.0.0.1:6379[0]> select 1
OK
127.0.0.1:6379[1]>
通過 CONFIG GET databases 獲取當前的db數(shù)
127.0.0.1:6379[1]> CONFIG GET databases
1) "databases"
2) "1"
而切換到不存在的 db 會報錯
127.0.0.1:6379[1]> SELECT 16
(error) ERR DB index is out of range
要正確地理解 redis 的“數(shù)據(jù)庫”概念,其不同于關(guān)系型數(shù)據(jù)庫多個庫常用于存儲不同應(yīng)用程序的數(shù)據(jù),且沒有方式可以同時清空實例下的所有庫數(shù)據(jù)。而 redis 的這些db更像是一種命名空間,且不適宜存儲不同應(yīng)用程序的數(shù)據(jù)。比如可以使用0號數(shù)據(jù)庫存儲某個應(yīng)用生產(chǎn)環(huán)境中的數(shù)據(jù),使用1號數(shù)據(jù)庫存儲測試環(huán)境中的數(shù)據(jù),但不適宜使用0號數(shù)據(jù)庫存儲A應(yīng)用的數(shù)據(jù)而使用1號數(shù)據(jù)庫B應(yīng)用的數(shù)據(jù),不同的應(yīng)用應(yīng)該使用不同的Redis實例存儲數(shù)據(jù)。要特別注意的是以下兩個命令的使用:
# 清空一個 redis 實例中的當前 db 中的數(shù)據(jù)
redis 127.0.0.1:6379> FLUSH
# 清空一個 redis 實例中所有數(shù)據(jù)庫中的數(shù)據(jù)
redis 127.0.0.1:6379> FLUSHALL
作者:夕陽雨晴,歡迎關(guān)注我的頭條號:偶爾美文,主流Java,為你講述不一樣的碼農(nóng)生活。