本文实例讲述了CI框架中redis缓存相关操作文件。分享给大家供大家参考,具体如下:
redis缓存类文件位置:
\'ci\\system\\libraries\\Cache\\drivers\\Cache_redis.php\'
<?php /** * CodeIgniter * * An open source application development framework for PHP 5.2.4 or newer * * NOTICE OF LICENSE * * Licensed under the Open Software License version 3.0 * * This source file is subject to the Open Software License (OSL 3.0) that is * bundled with this package in the files license.txt / license.rst. It is * also available through the world wide web at this URL: * http://opensource.org/licenses/OSL-3.0 * If you did not receive a copy of the license and are unable to obtain it * through the world wide web, please send an email to * licensing@ellislab.com so we can send you a copy immediately. * * @package CodeIgniter * @author EllisLab Dev Team * @copyright Copyright (c) 2008 - 2014, EllisLab, Inc. (http://ellislab.com/) * @license http://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0) * @link http://codeigniter.com * @since Version 3.0 * @filesource */ defined(\'BASEPATH\') OR exit(\'No direct script access allowed\'); /** * CodeIgniter Redis Caching Class * * @package CodeIgniter * @subpackage Libraries * @category Core * @author Anton Lindqvist <anton@qvister.se> * @link */ class CI_Cache_redis extends CI_Driver { /** * Default config * * @static * @var array */ protected static $_default_config = array( /* \'socket_type\' => \'tcp\', \'host\' => \'127.0.0.1\', \'password\' => NULL, \'port\' => 6379, \'timeout\' => 0 */ ); /** * Redis connection * * @var Redis */ protected $_redis; /** * Get cache * * @param string like *$key* * @return array(hash) */ public function keys($key) { return $this->_redis->keys($key); } /** * Get cache * * @param string Cache ID * @return mixed */ public function get($key) { return $this->_redis->get($key); } /** * mGet cache * * @param array Cache ID Array * @return mixed */ public function mget($keys) { return $this->_redis->mget($keys); } /** * Save cache * * @param string $id Cache ID * @param mixed $data Data to save * @param int $ttl Time to live in seconds * @param bool $raw Whether to store the raw value (unused) * @return bool TRUE on success, FALSE on failure */ public function save($id, $data, $ttl = 60, $raw = FALSE) { return ($ttl) ? $this->_redis->setex($id, $ttl, $data) : $this->_redis->set($id, $data); } /** * Delete from cache * * @param string Cache key * @return bool */ public function delete($key) { return ($this->_redis->delete($key) === 1); } /** * hIncrBy a raw value * * @param string $id Cache ID * @param string $field Cache ID * @param int $offset Step/value to add * @return mixed New value on success or FALSE on failure */ public function hincrby($key, $field, $value = 1) { return $this->_redis->hIncrBy($key, $field, $value); } /** * hIncrByFloat a raw value * * @param string $id Cache ID * @param string $field Cache ID * @param int $offset Step/value to add * @return mixed New value on success or FALSE on failure */ public function hincrbyfloat($key, $field, $value = 1) { return $this->_redis->hIncrByFloat($key, $field, $value); } /** * lpush a raw value * * @param string $key Cache ID * @param string $value value * @return mixed New value on success or FALSE on failure */ public function lpush($key, $value) { return $this->_redis->lPush($key, $value); } /** * rpush a raw value * * @param string $key Cache ID * @param string $value value * @return mixed New value on success or FALSE on failure */ public function rpush($key, $value) { return $this->_redis->rPush($key, $value); } /** * rpop a raw value * * @param string $key Cache ID * @param string $value value * @return mixed New value on success or FALSE on failure */ public function rpop($key) { return $this->_redis->rPop($key); } /** * brpop a raw value * * @param string $key Cache ID * @param string $ontime 阻塞等待时间 * @return mixed New value on success or FALSE on failure */ public function brpop($key,$ontime=0) { return $this->_redis->brPop($key,$ontime); } /** * lLen a raw value * * @param string $key Cache ID * @return mixed Value on success or FALSE on failure */ public function llen($key) { return $this->_redis->lLen($key); } /** * Increment a raw value * * @param string $id Cache ID * @param int $offset Step/value to add * @return mixed New value on success or FALSE on failure */ public function increment($id, $offset = 1) { return $this->_redis->exists($id) ? $this->_redis->incr($id, $offset) : FALSE; } /** * incrby a raw value * * @param string $key Cache ID * @param int $offset Step/value to add * @return mixed New value on success or FALSE on failure */ public function incrby($key, $value = 1) { return $this->_redis->incrby($key, $value); } /** * set a value expire time * * @param string $key Cache ID * @param int $seconds expire seconds * @return mixed New value on success or FALSE on failure */ public function expire($key, $seconds) { return $this->_redis->expire($key, $seconds); } /** * Increment a raw value * * @param string $id Cache ID * @param int $offset Step/value to add * @return mixed New value on success or FALSE on failure */ public function hset($alias,$key, $value) { return $this->_redis->hset($alias,$key, $value); } /** * Increment a raw value * * @param string $id Cache ID * @param int $offset Step/value to add * @return mixed New value on success or FALSE on failure */ public function hget($alias,$key) { return $this->_redis->hget($alias,$key); } /** * Increment a raw value * * @param string $id Cache ID * @return mixed New value on success or FALSE on failure */ public function hkeys($alias) { return $this->_redis->hkeys($alias); } /** * Increment a raw value * * @param string $id Cache ID * @param int $offset Step/value to add * @return mixed New value on success or FALSE on failure */ public function hgetall($alias) { return $this->_redis->hgetall($alias); } /** * Increment a raw value * * @param string $id Cache ID * @param int $offset Step/value to add * @return mixed New value on success or FALSE on failure */ public function hmget($alias,$key) { return $this->_redis->hmget($alias,$key); } /** * del a key value * * @param string $id Cache ID * @param int $offset Step/value to add * @return mixed New value on success or FALSE on failure */ public function hdel($alias,$key) { return $this->_redis->hdel($alias,$key); } /** * del a key value * * @param string $id Cache ID * @return mixed New value on success or FALSE on failure */ public function hvals($alias) { return $this->_redis->hvals($alias); } /** * Increment a raw value * * @param string $id Cache ID * @param int $offset Step/value to add * @return mixed New value on success or FALSE on failure */ public function hmset($alias,$array) { return $this->_redis->hmset($alias,$array); } /** * Decrement a raw value * * @param string $id Cache ID * @param int $offset Step/value to reduce by * @return mixed New value on success or FALSE on failure */ public function decrement($id, $offset = 1) { return $this->_redis->exists($id) ? $this->_redis->decr($id, $offset) : FALSE; } /** * Clean cache * * @return bool * @see Redis::flushDB() */ public function clean() { return $this->_redis->flushDB(); } /** * Get cache driver info * * @param string Not supported in Redis. * Only included in order to offer a * consistent cache API. * @return array * @see Redis::info() */ public function cache_info($type = NULL) { return $this->_redis->info(); } /** * Get cache metadata * * @param string Cache key * @return array */ public function get_metadata($key) { $value = $this->get($key); if ($value) { return array( \'expire\' => time() + $this->_redis->ttl($key), \'data\' => $value ); } return FALSE; } /** * Check if Redis driver is supported * * @return bool */ public function is_supported() { if (extension_loaded(\'redis\')) { return $this->_setup_redis(); } else { log_message(\'debug\', \'The Redis extension must be loaded to use Redis cache.\'); return FALSE; } } /** * Setup Redis config and connection * * Loads Redis config file if present. Will halt execution * if a Redis connection can\'t be established. * * @return bool * @see Redis::connect() */ protected function _setup_redis() { $config = array(); $CI =& get_instance(); if ($CI->config->load(\'redis\', TRUE, TRUE)) { $config += $CI->config->item(\'redis\'); } $config = array_merge(self::$_default_config, $config); $config = !empty($config[\'redis\'])?$config[\'redis\']:$config; $this->_redis = new Redis(); try { if ($config[\'socket_type\'] === \'unix\') { $success = $this->_redis->connect($config[\'socket\']); } else // tcp socket { $success = $this->_redis->connect($config[\'host\'], $config[\'port\'], $config[\'timeout\']); } if ( ! $success) { log_message(\'debug\', \'Cache: Redis connection refused. Check the config.\'); return FALSE; } } catch (RedisException $e) { log_message(\'debug\', \'Cache: Redis connection refused (\'.$e->getMessage().\')\'); return FALSE; } if (isset($config[\'password\'])) { $this->_redis->auth($config[\'password\']); } return TRUE; } /** * Class destructor * * Closes the connection to Redis if present. * * @return void */ public function __destruct() { if ($this->_redis) { $this->_redis->close(); } } } /* End of file Cache_redis.php */ /* Location: ./system/libraries/Cache/drivers/Cache_redis.php */
更多关于CodeIgniter相关内容感兴趣的读者可查看本站专题:《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《php优秀开发框架总结》、《Yii框架入门及常用技巧总结》、《php缓存技术总结》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家基于CodeIgniter框架的PHP程序设计有所帮助。
本文地址:https://www.stayed.cn/item/21910
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我