安裝redis服務以及php redis擴充
一:redis安裝
Download, extract and compile Redis with:
$ wget http://download.redis.io/releases/redis-3.0.4.tar.gz
$ tar xzf redis-3.0.4.tar.gz
$ cd redis-3.0.4
$ make
The binaries that are now compiled are available in the src directory. Run Redis with:
$ src/redis-server
You can interact with Redis using the built-in client:
$ src/redis-cli
redis> set foo bar
OK
redis> get foo
"bar"
More:http://www.redis.io/download
二、php擴充:
更多版本:http://pecl.php.net/package/redis
wget http://pecl.php.net/get/redis-2.2.5.tgz
#解壓
tar zxvf redis-2.2.5.tgz
#進入安裝目錄
cd redis-2.2.5
/usr/local/php/bin/phpize
#配置
./configure --with-php-config=/usr/local/php/bin/php-config
#編譯安裝
make && make install
安裝完成之後,出現下面的安裝路徑
/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/
配置php支援
#編輯設定檔,在最後一行添加以下內容
vim /usr/local/php/etc/php.ini
extension="redis.so"
這個時候phpinfo()就可以看到redis擴充了。
redis小例子:
$redis = new redis();
$test=$redis->connect('127.0.0.1', 6379);
var_dump($test);
$result = $redis->set('test',"111cn.net");
var_dump($result); //結果:bool(true)
$result = $redis->get('test');
var_dump($result); //結果:string(11) "111cn.net"
修改php.ini的設定
session.save_handler = redis
session.save_path = "tcp://127.0.0.1:6379"
修改後重啟php-fpm,phpinfo()可以查看到session儲存在redis中。
如果不想修改php.ini,可在代碼中加入:
ini_set("session.save_handler","redis");
ini_set("session.save_path","tcp://127.0.0.1:6379");
如果redis.conf設定了串連密碼(requirepass),session的save_path需修改為:tcp://127.0.0.1:6379?auth=requirepass的值。
如果選擇redis資料庫,session.save_path = "tcp://xx.xx.xx.xx:6789?database=11",諸如此類。
查看redis儲存session的值:
<?php
session_start();
$_SESSION['sessionid'] = 'www.111cn.net';
$redis = new redis();
$redis->connect('127.0.0.1', 6379);
//redis用 PHPREDIS_SESSION: 加 session_id 作為key,並且是以string的形式儲存
echo $redis->get('PHPREDIS_SESSION:' . session_id()); //輸出www.111cn.net
?>
在網上看到有人質疑redis儲存session值會有並發一致性的問題(檔案儲存體session有檔案鎖來處理),這塊沒有研究。