分布式系统中Redis共享Session

方法一:修改配置文件

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

session.save_handler =redis

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?auth=1234qwer");

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

session_start();

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

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

echo $_SESSION['time']."
";

echo $_SESSION['name']."
";

echo session_id()."
";

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

打印出来:

1492074559

李四

6sv5ut17m6jq3fcf3khlcjtkd7

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

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

分布式系统中Redis共享Session_第1张图片

方法二:程序实现

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

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}

你可能感兴趣的:(分布式系统中Redis共享Session)