php Session存储到Redis的方法

2019-07-22 22:48栏目:编程学习

当然要写先安装php的扩展,可参考这篇文章:Redis及PHP扩展安装 修改php.ini的设置

方法一:修改配置文件

复制代码 代码如下:

找到php.ini配置文件,修改如下参数

session.save_handler = redis
session.save_path = “tcp://127.0.0.1:6379″
修改后重启php-fpm或nginx,phpinfo()

session.save_handler =redis

session redis
如果不想修改php.ini可这样

session.save_path="tcp://127.0.0.1:6379?auth=1234qwer"

复制代码 代码如下:

session.php脚本测试

ini_set(“session.save_handler”,”redis”);
ini_set(“session.save_path”,”tcp://127.0.0.1:6379″);

// 如果没有修改配置文件,则可以使用如下代码设置

// ini_set("session.save_handler","redis");

// ini_set("session.save_path","tcp://127.0.0.1:6379?auth=1234qwer");

ini_set('session.gc_maxlifetime',600);//设置过期时间为600秒

session_start();

$_SESSION['time'] = time();

$_SESSION['name'] = '李四';

echo $_SESSION['time']."<br>";

echo $_SESSION['name']."<br>";

echo session_id()."<br>";

echo 'php_session = '.json_encode($_SESSION['users']);

打印出来:

1492074559

李四

6sv5ut17m6jq3fcf3khlcjtkd7

php_session = {"name":"ybl","age":60}

如果配置文件/etc/redis.conf里设置了连接密码requirepass保存session的时候会报错,save_path这样写 tcp://127.0.0.1:6379?auth=authpwd 即可。
有网友提到相对于文件存储的session,redis或者memcache存储session值会有并发一致性的问题,这块并没有细测过。

这样的好处还有到了过期时间之后,redis会自动把数据删除

复制代码 代码如下:

图片 1

<?php
//如果未修改php.ini下面两行注释去掉
//ini_set('session.save_handler', 'redis');
//ini_set('session.save_path', 'tcp://127.0.0.1:6379');
session_start();
$_SESSION['sessionid'] = 'this is session content!';
echo $_SESSION['sessionid'];
echo '<br/>';

方法二:程序实现

$redis = new redis();
$redis->connect('127.0.0.1', 6379);
//redis用session_id作为key并且是以string的形式存储
echo $redis->get('PHPREDIS_SESSION:' . session_id());
 ?>  

不修改配置文件,通过程序实现。session.php脚本测试

您可能感兴趣的文章:

  • Spring boot通过HttpSessionListener监听器统计在线人数的实现代码
  • SpringMVC拦截器实现监听session是否过期详解
  • php redis实现多台服务器内网存储session并读取示例
  • php实现Session存储到Redis
  • 解决Spring session(redis存储方式)监听导致创建大量redisMessageListenerContailner-X线程问题

ini_set("session.save_handler","redis");

ini_set("session.save_path","tcp://127.0.0.1:6379?auth=1234qwer");

session_start();

$_SESSION['users'] =array('name'=>'ybl','age'=>60);

$redis=newredis();

$redis->connect('127.0.0.1',6379);

$redis->auth("1234qwer");

//打印session_id

echo 'session_id = '.session_id();

//从redis获取session(redis用session_id作为key,以string的形式存储)

echo 'redis_session = '.$redis->get('PHPREDIS_SESSION:'.session_id());

//php获取session值

echo 'php_session = '.json_encode($_SESSION['users']);

打印:

session_id = jisieih1dmsqh28su4f4smmj30

redis_session = users|a:2:{s:4:"name";s:3:"ybl";s:3:"age";i:60;}

php_session = {"name":"ybl","age":60}

版权声明:本文由威尼斯人app发布于编程学习,转载请注明出处:php Session存储到Redis的方法