php Redis儲存Session的例子詳解

來源:互聯網
上載者:User

安裝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有檔案鎖來處理),這塊沒有研究。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.