redis集群实现session共享

本文介绍了如何在两台服务器上使用redis集群实现session共享,包括下载标准库、配置代码及验证过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

redis集群实现session共享

在两台服务器上通过redis实现session共享:

描述

A服务器:192.168.4.254
B服务器:192.168.4.125

  • 此代码的实现依赖于https://github.com/nrk/predis 标准库
  • 下载上面的标准库,放到你的根目录下,如predis文件夹。
  • 代码中包含predis标准库加载文件require( “predis/autoload.php” );
  • 以下是实例代码内容:
require( "predis/autoload.php" );
$single_server = array(
    'tcp://192.168.4.254:6379' ,
    'tcp://192.168.4.254:6380' ,
    'tcp://192.168.4.254:6381' ,
    'tcp://192.168.4.125:6382' ,
    'tcp://192.168.4.125:6383' ,
    'tcp://192.168.4.125:6384' ,
);

$options = array( 'cluster' => 'redis' ,'prefix' => 'sessions:' );

$client = new Predis\Client( $single_server, $options );
$handler = new Predis\Session\Handler( $client, array( 'gc_maxlifetime' => 50 ));
$handler ->register() ;
session_id( 'example_session_id' );
session_start() ;
if ( isset($_SESSION ['foo'])) {
    echo "Session has `foo` set to {$_SESSION[ 'foo']}" , PHP_EOL;
 } else {
    $_SESSION ['foo'] = $value = mt_rand();
    echo "Empty session, `foo` has been set with $value ", PHP_EOL;
}

A服务器效果:

这里写图片描述

B服务器:
这里写图片描述

因为我是先执行B服务器,后执行A服务器。结果发现他们的session结果是一致的

原理
  • 使用到redis集群
  • php的session_set_save_handler
  • 不要相信网上的所谓的php.ini的session redis配置。集群中根本不实用。我的php.ini中session.save_handler依然是files
  • 这里写图片描述
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值