一台伺服器上都快開啟200個redis執行個體了,看著就崩潰了。這麼做無非就是想讓不同類型的資料屬於不同的應用程式而彼此分開。
那麼,redis有沒有什麼方法使不同的應用程式資料彼此分開同時又儲存在相同的執行個體上呢。就相當於mysql資料庫,不同的應用程式資料儲存在不同的資料庫下。
redis下,資料庫是由一個整數索引標識,而不是由一個資料庫名稱。預設情況下,一個用戶端串連到資料庫0。redis設定檔中下面的參數來控制資料庫總數:
可以通過下面的命令來切換到不同的資料庫下
隨後,所有的命令將使用資料庫3,知道你明確的切換到另一個資料庫下。
每個資料庫都有屬於自己的空間,不必擔心之間的key衝突。
不同的資料庫下,相同的key取到各自的值。
flushdb命令清除資料,只會清除當前的資料庫下的資料,不會影響到其他資料庫。
flushall命令會清除這個執行個體的資料。在執行這個命令前要格外小心。
資料庫的數量是可以配置的,預設情況下是16個。修改redis.conf下的databases指令:
redis沒有提供任何方法來關聯標識不同的資料庫。因此,需要你來跟蹤什麼資料存放區到哪個資料庫下。
因此上面的快開啟200個執行個體的情境,可以使用不同的資料庫來儲存,而不必開啟如此那麼多的執行個體。
轉載請註明來自營運存留時間: http://www.ttlsa.com/html/4010.html
---
實際編程中,redis分區操作,引用jedis jar包
import redis.clients.jedis.JedisShardInfo;JedisShardInfo shard = new JedisShardInfo(node.getHost(), node.getPort(), node.getName());shard.setPassword(node.getPassword());shard.setDb(dbIndex);shards.add(shard);
這裡的shard.setDb(2) 相當於控制台裡輸入 "select 2" 選擇資料庫2(是從資料庫0開始的)