统一Redis操作类
来自技术开发小组内部wiki
开发说明
在经过一次redis的升级后,发现目前在前后台代码中有很多不同的redis类库调用,每个封装的方法也不一致,给后续维护带来了很多的不便,现统一编写一个统一调用类,在后续开发中 必须强制使用
适用范围
目前只在前后台代码中(fmb.dianping fmb.admin)进行了代码封装,其他代码库中的封装可以参照进行
实现过程
在config目录中新增了统一配置信息 <source lang='php'>
//redis统一配置 $config['redis_config'] = array(
'host' => "192.168.0.2", 'port' => 6379, 'pass' =>fmb_decode('TDlSUVFpcktPOWRp'),
); </source>
在libraries中新增了Redis类,该类的主要意图是从phpredis扩展中的Redis类继承,封装了连接参数,只需要实现特殊定制方法,其他原生方法就只需调用即可,无需一一对应方法编写 原生redis扩展提供的方法参考:http://www.cnblogs.com/zcy_soft/archive/2012/09/21/2697006.html
<source lang='php'> <?php // /////////////////////////////////////////////////// // Copyright(c) 2016,父母邦,帮父母 // 日 期:2016年11月18日 // 作 者:卢少锦 // E-mail :shaojin.lu@fumubang.com // 文件名 :Redis.php // 创建时间:上午10:54:46 // 编 码:UTF-8 // 摘 要:统一一份redis调用与执行,通过从扩展的Redis类继承 // ///////////////////////////////////////////////////
class CI_Redis extends Redis{
/** * 构造函数,从扩展类进行继承 */ public function __construct(){ parent::__construct(); //引入CI对象 $CI = & get_instance(); $config = $CI->config->item('redis_config'); $host = $config['host'];//主机 $port = $config['port'];//端口号 $pass = $config['pass'];//授权密码 parent::connect($host,$port); if(!empty($pass)){ //如果有授权机制就需要启动 parent::auth($pass); } } //select操作采用最原始的方法设置 //本身提供的方法如下: //参考地址:http://www.cnblogs.com/zcy_soft/archive/2012/09/21/2697006.html /** * 封装一个app消息推送统一发送接口 * @param array $msgbody */ public function app_msg_push($msgbody=array()){ $this->select(1);//确保与处理的通道一致 //消息编码 $msgcontent=rawurlencode(json_encode($msgbody)); $this->lpush("msg_queue_list","app_msg-push-".$msgcontent); } /** * 一个统一的推送消息的方法 * @param string $controller 控制器名 * @param string $method 方法名 * @param array $msgbody 消息体 */ public function to_push_msg($controller="",$method="",$msgbody=array()){ $this->select(1);//确保与处理的通道一致 //消息编码 $msgcontent=rawurlencode(json_encode($msgbody)); $this->lpush("msg_queue_list",$controller."-".$method."-".$msgcontent); }
} ?> </source>
调用方法
<source lang='php'> $this->load->library("redis",null,"redis"); $this->redis->select(1);//如果需要设定使用的库,就需要加上这行代码 $this->redis->set("test","xxxx"); print_r($this->redis->get("test")."\n"); //其他的原生调用方法就只需要这么弄就行,$this->redis->原生方法 </source>