93.7%的程序員!竟然都不知道Redis為什么默認(rèn)16個(gè)數(shù)據(jù)庫?
本文轉(zhuǎn)載自微信公眾號(hào)「UP技術(shù)控」,作者conan5566。轉(zhuǎn)載本文請(qǐng)聯(lián)系UP技術(shù)控公眾號(hào)。
背景
在實(shí)際項(xiàng)目中redis常被應(yīng)用于做緩存,分布式鎖/消息隊(duì)列等。但是在搭建配置好redis服務(wù)器后很多朋友應(yīng)該會(huì)發(fā)現(xiàn)和有這樣的疑問,為什么redis默認(rèn)建立了16個(gè)數(shù)據(jù)庫。
16個(gè)數(shù)據(jù)庫的由來
redis是一個(gè)字典結(jié)構(gòu)的存儲(chǔ)服務(wù)器,一個(gè)redis實(shí)例提供了多個(gè)用來存儲(chǔ)數(shù)據(jù)的字典,客戶端可以指定將數(shù)據(jù)存儲(chǔ)在哪個(gè)字典中。這與在一個(gè)關(guān)系數(shù)據(jù)庫實(shí)例中可以創(chuàng)建多個(gè)數(shù)據(jù)庫類似,所有可以將其中的每個(gè)字典都理解成一個(gè)獨(dú)立的數(shù)據(jù)庫。redis默認(rèn)支持16個(gè)數(shù)據(jù)庫,可以通過調(diào)整redis的配置文件redis/redis.conf中的databases來修改這一個(gè)值,設(shè)置完畢后重啟redis便完成配置。
客戶端與redis建立鏈接后會(huì)默認(rèn)選擇0號(hào)數(shù)據(jù)庫,不過可以隨時(shí)使用select命令更換數(shù)據(jù)庫。
- # 切換數(shù)據(jù)庫操作:切換到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號(hào)庫中獲取username
- 127.0.0.1:6379[1]> get username 。
在實(shí)際項(xiàng)目中則可以通過以redis配置文件的形式指定數(shù)據(jù)庫。
集群情況下是否支持一個(gè)實(shí)例多個(gè)db?
以上所說的都是基于單體redis的情況。而在集群的情況下不支持使用select命令來切換db,因?yàn)閞edis集群模式下只有一個(gè)db0。