用redis存储session,要用session_set_save_handler()函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用redis存储session,要用session_set_save_handler()函数相关的知识,希望对你有一定的参考价值。

代码的思路是正确的吗?正确的话哪里有问题,执行时我的write函数没执行,不知道为什么,求高手指教。。
class RedisSessionHandler

var $lifeTime;
var $startTime;
var $host = '127.0.0.1';
var $port = 6379;
function open($savePath,$sessionName)

//获取session-lifeTime
$this->lifeTime = get_cfg_var("session.gc_maxlifetime");
//连接redis
$redis = new Redis();
//连接服务
$redis->connect('127.0.0.1',6379);
if($redis != NULL)
$startTime = time();
return true;
else
return false;



function close()

$this->gc(ini_get('session.gc_maxlifetime'));
return true;


function read($sessionId)

if($redis->get($sessionId))
$redis->get($sessionId);

return '';


function write($sessionId, $sessionData)

$status = $redis->set($sessionId,$sessionData);
if($status)
return true;

return false;


function destroy($sessionId)

$redis->delete($sessionId);
return true;


function gc($maxlifetime)

//以后添加
return true;



菜鸟一个,希望写的清楚点、。、

参考技术A 把你执行的代码贴出来
你不会直接执行的write吧,那样redis都没连接。你的redis都没连接,后面的操作当然不会有效追问

确实,$redis 这个要设置成静态变量,在下面的read、write函数中要用到= =!

参考技术B php.ini中配置下就行了
session.save_handler = redis
session.save_path = "tcp://127.0.0.1:6379
你连接redis 需要让redis server服务先运行。追问

这个我改了、、、

将session存储于redis

参考技术A 首先在php.ini中修改两处配置:

1、session.save_handler=redis
2、session.save_path = " tcp://host1:6379?weight=1 , tcp://host2:6379?weight=2&timeout=2.5 , tcp://host3:6379?weight=2&read_timeout=2.5 "

主要是save_path这块的配置,如果Redis服务器大于1台,就用上面的格式填写多台配置,每台redis用逗号分隔。
注意这块用tcp:// 这个协议作开头。

然后介绍几个参数:

以上是关于用redis存储session,要用session_set_save_handler()函数的主要内容,如果未能解决你的问题,请参考以下文章

将session存储于redis

Spring-session整合到Redis

redis和python交互和django中配置用redis存储session

用Redis存储session

Redis 分布式session

php 怎么把session写入redis