redis 实例化以及ping 的操作
来源:互联网 发布:经传全套公式源码 编辑:程序博客网 时间:2024/05/18 03:13
一旦开启一个不关闭的脚本 就需要一个ping函数去不断的校验的链接
下面的redis类经过简单的封装 ; ping 函数由于历史原因并没有封装到 Redis类里面
class Redis { protected $handler; protected $options = [ 'persistent' => false, 'host' => '127.0.0.1', 'port' => 6379, 'password' => '', 'select' => 0, 'timeout' => 0, ]; /** * 架构函数 * @param array $options 配置redis初始化参数 */ public function __construct($options = []) { if (!extension_loaded('redis')) { throw new \BadFunctionCallException('not support: redis'); } if (!empty($options)) { $this->options = array_merge($this->options, $options); } $this->handler = new \Redis; $func = $this->options['persistent'] ? 'pconnect' : 'connect'; $this->handler->$func($this->options['host'], $this->options['port'], $this->options['timeout']); if ('' != $this->options['password']) { $this->handler->auth($this->options['password']); } if (0 != $this->options['select']) { $this->handler->select($this->options['select']); } } public function __call($method, $args) { return call_user_func_array([$this->handler,$method], $args); } //禁止clone private function __clone() {} public function __destruct() { $this->handler->close(); }}
//获取redis实例,单例function getRedis(){ static $redis; try { // init redis if (!$redis) { $redis = redisInit(); } // ping redis $redis = redisPing($redis); if (!is_object($redis)) { throw new \RedisException('reconnect redis failed'); } } catch (\RedisException $e) { error_log($e->getMessage(), 3, ERROR_LOG); } return $redis;}/** * @param $redis * @return Redis|null */function redisPing($redis){ try { if (!is_object($redis) || !method_exists($redis, 'ping')) { throw new \RedisException('This connection is down'); } $response = $redis->ping(); if ($response != '+PONG') { throw new \RedisException('This connection is down'); } } catch (\RedisException $e) { $redis = redisInit(); } return $redis;}function redisInit(){ // config $redisConf = array( 'type' => 'redis', 'host' => 'crs-redis.test.cn', 'port' => '6379', ); // persistent redis $redisConf['persistent'] = true; // begin $redis = null; $i = 0; while ($i < 3 && !$redis) { try { $redis = new Redis($redisConf); } catch (\RedisException $e) { $i++; } } return $redis;}
阅读全文
0 0
- redis 实例化以及ping 的操作
- redis数据库的使用方法以及测试实例
- 如何使用Openair4G的OTG以及进行ping操作
- 针对Redis队列的理解,实例操作
- php redis的简单操作实例
- Redis的安装以及基本操作简介
- Redis入门之redis 连接以及 对字符的操作
- Linux下redis 的安装以及C++操作redis
- Redis入门之redis 连接以及 对字符的操作
- redis实例操作
- redis操作数据库实例-
- php操作redis实例
- Redis常用命令以及代码实例
- Redis常用命令以及代码实例
- yum安装redis和redis-php以及操作redis的php语句
- Unity3d检测当前网络环境wifi/3G/4G,以及对服务器的Ping操作
- python操作redis操作方法实例
- PHP实现操作redis的封装类完整实例
- 静态,构造方法和super
- 利用pyinstaller打包python3程序
- localStorage使用总结
- Android 使用集成环信EaseUI
- 理解原码、反码和补码-------带例子详解
- redis 实例化以及ping 的操作
- Android客户端性能测试—流量(三)
- 很开心,第一次留言就送书
- Linux学习笔记:bash脚本编程之用户交互
- 如何将一个已存在的目录转换为一个 GIT 项目并托管到 GITHUB 仓库
- 08动态Sql
- 小程序报console.error(` pages/calculate/calculate 出现脚本错误或者未正确调用 Page()`)
- 使用springMVC对静态网页传值 使用AJAX
- 第十五章——相机