两个文件 test.php Re.class.php
Re.class.php采用单列模式保证一个入口 只有一次连接 避免资源浪费
<?php //redis操作封装类 class Re{ private static $redis; public $handle; //redis链接 private function __construct() { } private function __clone(){ } public function connect($options=array()){ $host = isset($options['host'])? $options['host']:'127.0.0.1'; $port = isset($options['port'])? $options['port']:6379; $this->handle = new Redis(); $this->handle->connect($host,$port); } static public function getInstance(){ $param = func_get_args(); if(is_null(self::$redis) || !isset(self::$redis)){ self::$redis = new self(); self::$redis->connect($param); } return self::$redis; } //删除链表的所有元素 public function Ldelall($key){ $len = $this->handle->Llen($key); for($i=0;$i<$len;$i++){ $this->handle->rPop($key); } } }
test.php
require_once('./Re.class.php'); $re = Re::getInstance(); print_r($re->handle); $re2 = Re::getInstance(); print_r($re2->handle);
结果
Redis Object ( [socket] => Resource id #4 ) Redis Object ( [socket] => Resource id #4 )
同一个实例成功