env()) { $this->enable = false; return; } if (!empty($config['server'])) { try { $this->obj = new Redis(); if ($config['pconnect']) { $connect = @$this->obj->pconnect($config['server'], $config['port']); } else { $connect = @$this->obj->connect($config['server'], $config['port']); } } catch (RedisException $e) { } $this->enable = $connect ? true : false; if ($this->enable) { if ($config['requirepass']) { $this->obj->auth($config['requirepass']); } @$this->obj->setOption(Redis::OPT_SERIALIZER, $config['serializer']); } } } function &instance() { static $object; if (empty($object)) { $object = new memory_driver_redis(); $object->init(getglobal('config/memory/redis')); } return $object; } function get($key) { if (is_array($key)) { return $this->getMulti($key); } return $this->obj->get($key); } function getMulti($keys) { $result = $this->obj->getMultiple($keys); $newresult = array(); $index = 0; foreach ($keys as $key) { if ($result[$index] !== false) { $newresult[$key] = $result[$index]; } $index++; } unset($result); return $newresult; } function select($db = 0) { return $this->obj->select($db); } function set($key, $value, $ttl = 0) { if ($ttl) { return $this->obj->setex($key, $ttl, $value); } else { return $this->obj->set($key, $value); } } function rm($key) { return $this->obj->delete($key); } function setMulti($arr, $ttl = 0) { if (!is_array($arr)) { return FALSE; } foreach ($arr as $key => $v) { $this->set($key, $v, $ttl); } return TRUE; } function inc($key, $step = 1) { return $this->obj->incr($key, $step); } function dec($key, $step = 1) { return $this->obj->decr($key, $step); } function getSet($key, $value) { return $this->obj->getSet($key, $value); } function sADD($key, $value) { return $this->obj->sADD($key, $value); } function sRemove($key, $value) { return $this->obj->sRemove($key, $value); } function sMembers($key) { return $this->obj->sMembers($key); } function sIsMember($key, $member) { return $this->obj->sismember($key, $member); } function keys($key) { return $this->obj->keys($key); } function expire($key, $second) { return $this->obj->expire($key, $second); } function sCard($key) { return $this->obj->sCard($key); } function hSet($key, $field, $value) { return $this->obj->hSet($key, $field, $value); } function hDel($key, $field) { return $this->obj->hDel($key, $field); } function hLen($key) { return $this->obj->hLen($key); } function hVals($key) { return $this->obj->hVals($key); } function hIncrBy($key, $field, $incr) { return $this->obj->hIncrBy($key, $field, $incr); } function hGetAll($key) { return $this->obj->hGetAll($key); } function sort($key, $opt) { return $this->obj->sort($key, $opt); } function exists($key) { return $this->obj->exists($key); } function clear() { return $this->obj->flushAll(); } } ?>