php Redis存储Session的例子详解

作者:袖梨 2022-06-24

安装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',"111com.net");
var_dump($result);    //结果:bool(true)
 
$result = $redis->get('test');
var_dump($result);   //结果:string(11) "111com.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的值:

session_start();
$_SESSION['sessionid'] = 'www.111com.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.111com.net
?>

在网上看到有人质疑redis存储session值会有并发一致性的问题(文件存储session有文件锁来处理),这块没有研究。

相关文章

精彩推荐