Redis 學習之路 (011) - redis 多數據庫

一臺服務器上都快開啓200個redis實例了,看着就崩潰了。這麼作無非就是想讓不一樣類型的數據屬於不一樣的應用程序而彼此分開。mysql

那麼,redis有沒有什麼方法使不一樣的應用程序數據彼此分開同時又存儲在相同的實例上呢?就至關於mysql數據庫,不一樣的應用程序數據存儲在不一樣的數據庫下。redis

redis下,數據庫是由一個整數索引標識,而不是由一個數據庫名稱。默認狀況下,一個客戶端鏈接到數據庫0。redis配置文件中下面的參數來控制數據庫總數:sql

databases 16

能夠經過下面的命令來切換到不一樣的數據庫下:數據庫

redis> select 2 
OK

隨後,全部的命令將使用數據庫3,知道你明確的切換到另外一個數據庫下。每一個數據庫都有屬於本身的空間,沒必要擔憂之間的key衝突。服務器

➜  ~ redis-cli -p 6379
127.0.0.1:6379> set test 1234
OK
127.0.0.1:6379> keys *
1) "test"
127.0.0.1:6379> get test
"1234"
127.0.0.1:6379> select 2            //切換到數據庫2
OK
127.0.0.1:6379[2]> get test
(nil)                               //找不到這個值
127.0.0.1:6379[2]> select 0         //切換到數據庫2
OK
127.0.0.1:6379> get test
"1234"

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

 1 ➜  ~ redis-cli -p 6379                  //登陸數據庫
 2 127.0.0.1:6379> select 0                //切換到默認數據庫(0)
 3 OK
 4 127.0.0.1:6379> set test 1234           //在數據庫 0 設置test的值爲"1234"
 5 OK
 6 127.0.0.1:6379> select 1                //切換到默認數據庫(1)
 7 OK
 8 127.0.0.1:6379[1]> set test 0000        //在數據庫 1 設置test的值爲"1234"
 9 OK
10 127.0.0.1:6379[1]> select 0             //切換到默認數據庫(0)
11 OK
12 127.0.0.1:6379> get test                //查看數據庫 0 的test數據
13 "1234"
14 127.0.0.1:6379> select 1
15 OK
16 127.0.0.1:6379[1]> get test             //查看數據庫 1 的test數據
17 "0000"

flushdb命令清除數據,只會清除當前的數據庫下的數據,不會影響到其餘數據庫。code

 1 ➜  ~ redis-cli -p 6379
 2 127.0.0.1:6379> select 1            //切換到數據庫 1
 3 OK
 4 127.0.0.1:6379[1]> keys *           //顯示當前數據庫全部字段
 5 1) "test"
 6 127.0.0.1:6379[1]> flushdb          //清空當前數據庫的字段
 7 OK
 8 127.0.0.1:6379[1]> keys *           //顯示當前數據庫全部字段
 9 (empty list or set)                 //當前數據庫無任何字段
10 127.0.0.1:6379[1]> select 0         //切換到數據庫 0
11 OK
12 127.0.0.1:6379> keys *              //顯示當前數據庫全部字段,當前數據庫 0 沒有被清除,說明flushdb命令清除數據,只會清除當前的數據庫下的數據,不會影響到其餘數據庫。
13 1) "test"

flushall命令會清除這個實例的數據。在執行這個命令前要格外當心。server

數據庫的數量是能夠配置的,默認狀況下是16個。修改redis.conf(/etc/redis/redis.conf)下的databases指令:blog

而後重啓redis並指向redis.conf,使redis生效:索引

sudo redis-server /etc/redis/redis.conf

redis沒有提供任何方法來關聯標識不一樣的數據庫。所以,須要你來跟蹤什麼數據存儲到哪一個數據庫下。

所以上面的快開啓200個實例的場景,可使用不一樣的數據庫來存儲,而沒必要開啓如此那麼多的實例。 

相關文章
相關標籤/搜索