php連接redis集群
⑴ windows 7 php怎麼通過redis擴展使用redis
PHP 7安裝Redis擴展
1、php操作第一步就是要安裝對應的擴展。在Windows環境下則是對應的.dll文件。Windows環境下由於編譯環境不同,對應擴展在選擇的時候需要注意當前php的先關信息。可以通過phpinfo()查看。如果可以看到對應的環境,這在選擇擴展的時候有用
2、選擇對應PHP環境擴展
通過以上圖我們可以看到「VC14」和「ts」這樣的字樣,如果不明白的同學在找對應擴展的時候也一樣要找到這樣的字樣。
3、安裝PHP 7擴展
下載php_redis-20160319-ts-vc14-x64.zip之後解壓,將解壓後的php_redis.dll文件放到php\ext目錄下。然後在php.ini末尾添加extension=php_redis.dll。重啟Apache服務。再次通過phpinfo()查看,如圖表示安裝成功
測試例子
1、擴展安裝成功之後需要驗證下是否可以用。web伺服器目錄下創建文件輸入下面內容:
<?php
$redis = new Redis();
$redis->connect('127.0.0.1',6379);
$redis->set('test','hello redis');
echo $redis->get('test');
?>
2、然後在網頁上訪問,如果有hello redis輸入則表示擴展安裝成功。
⑵ php 怎麼安裝redis擴展
1、首先到相應網站下載redis:
下載完成後解壓到任意盤符如:D:/redis
裡麵包括:如圖所示。
redis-server.exe:服務程序
redis-check-mp.exe:本地資料庫檢查
redis-check-aof.exe:更新日誌檢查
redis-benchmark.exe:性能測試,用以模擬同時由N個客戶端發送M個 SETs/GETs 查詢 (類似於 Apache 的ab 工具).
當然還需要一個:redis.conf(具體內容網上隨便搜都會有)
2、啟動redis:
用cmd命令進入到redis的根目錄,
輸入命令:redis-server.exe redis.conf
啟動後如圖所示:
啟動cmd窗口要一直開著,關閉後則Redis服務關閉。
3、這時服務開啟著,另外開一個窗口進行,設置客戶端:
輸入命令:redis-cli.exe -h 192.168.2.168 -p 6379(這個ip自己定哈,6379為redis默認埠)
輸入後如圖所示:
4、安裝redis擴展
首先,查看所用php編譯版本V6/V9 在phpinfo()中查看
5、去相應網站下載redis擴展:
如圖所示下載對應版本的redis擴展
6、將下載的php_redis.dll放在php擴展目錄中(ext),並修改配置文件php.ini
添加 擴展的時候一定要
extension=php_igbinary.dll
extension=php_redis.dll
這個順序如圖:
7、重新啟動服務,查看phpinfo(),出現如圖表示成功;
8、PHP代碼測試
$redis = new Redis();
$redis->connect("192.168.138.2","6379"); //php客戶端設置的ip及埠
//存儲一個 值
$redis->set("say","Hello World");
echo $redis->get("say"); //應輸出Hello World
//存儲多個值
$array = array('first_key'=>'first_val',
'second_key'=>'second_val',
'third_key'=>'third_val');
$array_get = array('first_key','second_key','third_key');
$redis->mset($array);
var_mp($redis->mget($array_get));
⑶ 用phpredis操作redis集群支持publish和subscribe嗎
用phpredis操作redis集群支持publish和subscribe
參數可選Redis::MULTI或Redis::PIPELINE. 默認是 Redis::MULTI
Redis::MULTI:將多個操作當成一個事務執行
Redis::PIPELINE:讓(多條)執行命令簡單的,更加快速的發送給伺服器,但是沒有任何原子性的保證
discard:刪除一個事務
返回值
multi(),返回一個redis對象,並進入multi-mode模式,一旦進入multi-mode模式,
以後調用的所有方法都會返回相同的對象,只到exec()方法被調用。
watch, unwatch (代碼測試後,不能達到所說的效果)
監測一個key的值是否被其它的程序更改。如果這個key在watch 和 exec (方法)間被修改,
這個 MULTI/EXEC 事務的執行將失敗(return false)
unwatch 取消被這個程序監測的所有key
⑷ php 連接redis,怎麼判斷Redis是否掛掉
一般鏈接redis,如果鏈接不上,或者redis掛掉,都會發生超時,你可以設置超時時間短一點,比如5秒。如果5秒鏈接不上則不連接了,繼續往下,不影響整體代碼運行。
<?php
$redis=newRedis();
$redis->connect($config['host'],$config['port'],$config['timeout']);
$redis->ping();//檢測當前鏈接狀態,返回PONG或者拋出異常。
⑸ thinkphp在控制器連接redis時報錯
1.在配置項中定義:
12345'SESSION_TYPE' => 'Redis', //session保存類型'SESSION_PREFIX' => 'sess_', //session前綴'REDIS_HOST' => '127.0.0.1' //REDIS伺服器地址'REDIS_PORT' => 6379, //REDIS連接埠號'SESSION_EXPIRE' => 3600, //SESSION過期時間
2.在ThinkPHP\Library\Think\Session\Driver目錄下新建Redis.class.php文件
文件內容如下:
<?phpnamespace Think\Session\Driver;class Redis {// Redis連接對象 private $redis;// Session過期時間 private $expire; /** * 打開方法 * @param type $path * @param type $name * @return type */ public function open($path, $name) { $this->expire = C('SESSION_EXPIRE') ? C('SESSION_EXPIRE') : ini_get('session.gc_maxLifetime'); $this->redis = new Redis(); return $this->redis->connect(C('REDIS_HOST'), C('REDIS_PORT')); } /** * 關閉 * @return type */ public function close() { return $this->redis->close(); } /** * 讀取 * @param string $id * @return type */ public function read($id) { $id = C('SESSION_PREFIX') . $id; $data = $this->redis->get($id); return $data ? $data : ''; } /** * 寫入 * @param string $id * @param type $data * @return type */ public function write($id, $data) { $id = C('SESSION_PREFIX') . $id; return $this->redis->set($id, $data, $this->expire); } /** * 銷毀 * @param string $id */ public function destroy($id) { $id = C('SESSION_PREFIX') . $id; $this->redis->delete($id); } /** * 垃圾回收 * @param type $maxLifeTime * @return boolean */ public function gc($maxLifeTime) { return true; }}
memcached的方法和Redis差不多一樣!