1. 程式人生 > >PHP操作Redis(一) PHP連接Redis,含Redis密碼驗證、指定某一Redis數據庫

PHP操作Redis(一) PHP連接Redis,含Redis密碼驗證、指定某一Redis數據庫

自己 mysq iss rds 沖突 清除數據 syntax nbsp 就是

臺服務器上都快開啟200個redis實例了,看著就崩潰了。這麽做無非就是想讓不同類型的數據屬於不同的應用程序而彼此分開。

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

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

1 databases 16

可以通過下面的命令來切換到不同的數據庫下

1 2 redis> select 2
OK

隨後,所有的命令將使用數據庫3,知道你明確的切換到另一個數據庫下。

每個數據庫都有屬於自己的空間,不必擔心之間的key沖突。

技術分享圖片

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

技術分享圖片

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

技術分享圖片

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

數據庫的數量是可以配置的,默認情況下是16個。修改redis.conf下的databases指令:

1 databases 64

redis沒有提供任何方法來關聯標識不同的數據庫。因此,需要你來跟蹤什麽數據存儲到哪個數據庫下。

因此上面的快開啟200個實例的場景,可以使用不同的數據庫來存儲,而不必開啟如此那麽多的實例。

轉載請註明來自運維生存時間: http://www.ttlsa.com/html/4010.html

---

實際編程中,redis分片操作,引用jedis jar包

  1. import redis.clients.jedis.JedisShardInfo;
  2. JedisShardInfo shard = new JedisShardInfo(node.getHost(), node.getPort(), node.getName());
  3. shard.setPassword(node.getPassword());
  4. shard.setDb(dbIndex);
  5. shards.add(shard);

這裏的shard.setDb(2) 相當於控制臺裏輸入 "select 2" 選擇數據庫2(是從數據庫0開始的)

<?php
$redis = new Redis();
$redis->connect(‘127.0.0.1‘, 6379); //連接Redis
$redis->auth(‘mypasswords123sdfeak‘); //密碼驗證
$redis->select(2);//選擇數據庫2
$redis->set( "testKey" , "Hello Redis"); //設置測試key
echo $redis->get("testKey");//輸出value
?>

PHP操作Redis(一) PHP連接Redis,含Redis密碼驗證、指定某一Redis數據庫