exists($sessionId); $result = $redis->hSet($sessionId, $key, $data); if (!$isExisted) { $redis->expire($sessionId, self::$expire); } } catch (\Exception $ex) { $result = false; } return $result; } /** * 读取会话信息 * * @param $key * @return mixed */ public static function get($key) { try { $sessionId = SessionID; $redis = self::getConnection(); $result = $redis->hGet($sessionId, $key); $redis->expire($sessionId, self::$expire); } catch (\Exception $ex) { Logger::debug($ex, 'session.get'); $result = null; } return $result; } /** * 获取所有的会话信息 * * @param null $user_id * @return array */ public static function getAll($user_id = null) { try { $sessionId = self::getSessionId($user_id); $result = self::getConnection()->hGetAll($sessionId); } catch (\Exception $ex) { Logger::debug($ex, 'session.get_all'); $result = array(); } return $result; } /** * 删除会话 * * @param null $user_id * @return bool */ public static function destroy($user_id = null) { try { $sessionId = self::getSessionId($user_id); $result = self::getConnection(true)->del($sessionId); $_COOKIE[$sessionId] = null; } catch (\Exception $ex) { $result = false; } return $result; } /** * 获取会话ID * * @param null $user_id * @return string */ public static function getSessionId($user_id = null) { if (SessionID){ return SessionID; } if ($user_id) { $sessionId = md5($user_id); } else { $host = $_SERVER['HTTP_HOST']; $key = 'sid:' . crc32($host); if (!$_COOKIE[$key]) { $sessionId = md5(microtime() . rand() . uniqid()); setcookie($key, $sessionId, time() + self::$expire * 10, '/', $host, null, true); } else { $sessionId = $_COOKIE[$key]; } } return $sessionId; } /** * * @param bool $isMaster * @return \Redis * @internal param $ $isMaster* $isMaster */ protected static function getConnection($isMaster = false) { $configClass = 'Redis\Core'; $redis = new Redis($configClass); return $redis->getConnection($isMaster); } }