php使用redis实现分布式共享

5 阅读1分钟

1.php.ini里头配置 $redis_config = ['host' => '192.168.200.229', 'port' => 6379];

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

@ini_set("session.save_path", 'tcp://'.redisconfig[host].:.redis_config['host'].':'.redis_config['port']);

session_start();

$_SESSION['user_id'] = 123;

$_SESSION['user_name'] = 'helin';

$_SESSION['email'] = 'xxxxxx@163.com';

$session_id = session_id();

echo $session_id;

//ssr242gfioap1auk0njtdg07q4

echo "
";

$redis = new redis();

redis>connect(redis->connect(redis_config['host'], $redis_config['port']);

// redis 用 session_id 作为 key 并且是以 string 的形式存储

echo redis>get(PHPREDISSESSION:.redis->get('PHPREDIS_SESSION:' . session_id);

//user_id|i:123;user_name|s:5:"helin";email|s:14:"xxxxxx@163.com";

echo "
";

echo json_encode($_SESSION);

//{"user_id":123,"user_name":"helin","email":"xxxxxx@163.com"}

exit;

2.php程序使用session_set_save_handler 可以参考 tp SessionRedis

/**

  • redis session

  • Class SessionRedis */ class SessionRedis {

    public $prefix = 'ucenter_sessoin_'; /**

    • Session有效时间 */ protected $lifeTime = '';

    /**

    • 数据库句柄 */ protected $redis = array();

    /**

    • 打开Session
    • @access public
    • @param string $savePath
    • @param mixed sessName/publicfunctionopen(sessName */ public function open(savePath, sessName) { this->lifeTime = C('SESSION_EXPIRE')?C('SESSION_EXPIRE'):ini_get('session.gc_maxlifetime'); $this->redis = new CacheRedis(); return true; }

    /**

    • 关闭Session
    • @access public */ public function close() { return $this->redis->handler->close(); }

    /**

    • 读取Session
    • @access public
    • @param string sessID/publicfunctionread(sessID */ public function read(sessID) { data=data = this->redis->get(this>prefix.this->prefix.sessID); data=unserialize(data = unserialize(data); return $data; }

    /**

    • 写入Session

    • @access public

    • @param string $sessID

    • @param String sessData/publicfunctionwrite(sessData */ public function write(sessID,sessData) { //expire = time() + $this->lifeTime;

      this>redis>set(this->redis->set(this->prefix.sessID,serialize(sessID,serialize(sessData),$this->lifeTime); return true; }

    /**

    • 删除Session
    • @access public
    • @param string sessID/publicfunctiondestroy(sessID */ public function destroy(sessID) { return this>redis>rm(this->redis->rm(this->prefix.$sessID); }

    /**

    • Session 垃圾回收
    • @access public
    • @param string sessMaxLifeTime/publicfunctiongc(sessMaxLifeTime */ public function gc(sessMaxLifeTime) { return true; }

    /**

    • 打开Session

    • @access public */ public function execute() { session_set_save_handler(array(&this,"open"), array(&this,"close"), array(&this,"read"), array(&this,"write"), array(&this,"destroy"), array(&this,"gc")); } } ————————————————

                       版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                   
      

原文链接:blog.csdn.net/qq_24700495…