redis DB 使用,包含客戶端與jedis
一臺伺服器上都快開啟200個redis例項了,看著就崩潰了。這麼做無非就是想讓不同型別的資料屬於不同的應用程式而彼此分開。
那麼,redis有沒有什麼方法使不同的應用程式資料彼此分開同時又儲存在相同的例項上呢?就相當於mysql資料庫,不同的應用程式資料儲存在不同的資料庫下。
redis下,資料庫是由一個整數索引標識,而不是由一個數據庫名稱。預設情況下,一個客戶端連線到資料庫0。redis配置檔案中下面的引數來控制資料庫總數:
1 | databases16 |
可以通過下面的命令來切換到不同的資料庫下
1 2 | redis>select2 OK |
隨後,所有的命令將使用資料庫3,知道你明確的切換到另一個數據庫下。
每個資料庫都有屬於自己的空間,不必擔心之間的key衝突。
不同的資料庫下,相同的key取到各自的值。
flushdb命令清除資料,只會清除當前的資料庫下的資料,不會影響到其他資料庫。
flushall命令會清除這個例項的資料。在執行這個命令前要格外小心。
資料庫的數量是可以配置的,預設情況下是16個。修改redis.conf下的databases指令:
1 | databases64 |
redis沒有提供任何方法來關聯標識不同的資料庫。因此,需要你來跟蹤什麼資料儲存到哪個資料庫下。
因此上面的快開啟200個例項的場景,可以使用不同的資料庫來儲存,而不必開啟如此那麼多的例項。
轉載請註明來自運維生存時間: http://www.ttlsa.com/html/4010.html
Redis 本身支援16個資料庫,通過 資料庫id 設定,預設為0
設定redis的dbIndex方法有2種:
1.通過建構函式設定;
2.通過set方法設定;
先說第一種:
在使用redis時,Java中使用的是java版本的redis,即:jedis;具體寫法如下:
JedisPool pool = new JedisPool(jredisConfig, server, Integer.valueOf(port));
Jedis redis = pool.getResource();
String value = redis.get("key");//取值
建構函式有多個過載函式其中有下面一個:
public JedisPool(org.apache.commons.pool.impl.GenericObjectPool.Config poolConfig, String host, int port, int timeout, String password,
int database);
poolConfig: jedis配置資訊,如:maxActive,maxIdle,minIdle,maxWait
host: ip
port: 埠
timeout:超時時間,預設為2000
password:密碼,可為null
database:第幾個資料庫,預設:0
更換以上這個建構函式,就可以設定database了
第二種:通過set方法設定
JedisPool pool = new JedisPool(jredisConfig, server, Integer.valueOf(port));
Jedis redis = pool.getResource();
redis.select(index);//需要呼叫一個方法,設定使用第幾個database
String value = redis.get("key");//取值