public function __construct($config) { $this->config = $config; } private function getRedisInstance() { if (empty($this->Redis)) { $Redis = new \Redis(); $Redis->connect($this->config['host'], $this->config['port'], $this->config['timeout']); if (!$this->config['auth']) { $Redis->auth($this->config['auth']); }
$this->Redis = $Redis; } return $this->Redis; }
public function read($id) { return $this->getRedisInstance()->get($this->prefix.$id); }
public function write($id, $data) { if ($this->getRedisInstance()->setex($this->prefix.$id, $this->lifeTime, $data)) { return true; }
return false; }
public function destroy($id) { if($this->getRedisInstance()->delete($id)){//删除Redis中的指定记录 return true; } return false; }
public function gc($maxlifetime) { return true; }
public function __destruct() { session_write_close(); } }
这里需要注意下read方法,里面需要加一下serialize,以便于我们存储复杂的session结构。如果不加会报错(Warning: session_start(): Failed to read session data: user (path: ))这是因为Redis无法直接存储array结构,需要转化为string类型存储。