CI框架中redis缓存相关操作文件示例代码
本文实例讲述了CI框架中redis缓存相关操作文件。分享给大家供大家参考,具体如下:
redis缓存类文件位置:
'ci\system\libraries\Cache\drivers\Cache_redis.php'
<?php
/**
*CodeIgniter
*
*AnopensourceapplicationdevelopmentframeworkforPHP5.2.4ornewer
*
*NOTICEOFLICENSE
*
*LicensedundertheOpenSoftwareLicenseversion3.0
*
*ThissourcefileissubjecttotheOpenSoftwareLicense(OSL3.0)thatis
*bundledwiththispackageinthefileslicense.txt/license.rst.Itis
*alsoavailablethroughtheworldwidewebatthisURL:
*http://opensource.org/licenses/OSL-3.0
*Ifyoudidnotreceiveacopyofthelicenseandareunabletoobtainit
*throughtheworldwideweb,pleasesendanemailto
*licensing@ellislab.comsowecansendyouacopyimmediately.
*
*@packageCodeIgniter
*@authorEllisLabDevTeam
*@copyrightCopyright(c)2008-2014,EllisLab,Inc.(http://ellislab.com/)
*@licensehttp://opensource.org/licenses/OSL-3.0OpenSoftwareLicense(OSL3.0)
*@linkhttp://codeigniter.com
*@sinceVersion3.0
*@filesource
*/
defined('BASEPATH')ORexit('Nodirectscriptaccessallowed');
/**
*CodeIgniterRedisCachingClass
*
*@packageCodeIgniter
*@subpackageLibraries
*@categoryCore
*@authorAntonLindqvist<anton@qvister.se>
*@link
*/
classCI_Cache_redisextendsCI_Driver
{
/**
*Defaultconfig
*
*@static
*@vararray
*/
protectedstatic$_default_config=array(
/*
'socket_type'=>'tcp',
'host'=>'127.0.0.1',
'password'=>NULL,
'port'=>6379,
'timeout'=>0
*/
);
/**
*Redisconnection
*
*@varRedis
*/
protected$_redis;
/**
*Getcache
*
*@paramstringlike*$key*
*@returnarray(hash)
*/
publicfunctionkeys($key)
{
return$this->_redis->keys($key);
}
/**
*Getcache
*
*@paramstringCacheID
*@returnmixed
*/
publicfunctionget($key)
{
return$this->_redis->get($key);
}
/**
*mGetcache
*
*@paramarrayCacheIDArray
*@returnmixed
*/
publicfunctionmget($keys)
{
return$this->_redis->mget($keys);
}
/**
*Savecache
*
*@paramstring$idCacheID
*@parammixed$dataDatatosave
*@paramint$ttlTimetoliveinseconds
*@parambool$rawWhethertostoretherawvalue(unused)
*@returnboolTRUEonsuccess,FALSEonfailure
*/
publicfunctionsave($id,$data,$ttl=60,$raw=FALSE)
{
return($ttl)
?$this->_redis->setex($id,$ttl,$data)
:$this->_redis->set($id,$data);
}
/**
*Deletefromcache
*
*@paramstringCachekey
*@returnbool
*/
publicfunctiondelete($key)
{
return($this->_redis->delete($key)===1);
}
/**
*hIncrByarawvalue
*
*@paramstring$idCacheID
*@paramstring$fieldCacheID
*@paramint$offsetStep/valuetoadd
*@returnmixedNewvalueonsuccessorFALSEonfailure
*/
publicfunctionhincrby($key,$field,$value=1)
{
return$this->_redis->hIncrBy($key,$field,$value);
}
/**
*hIncrByFloatarawvalue
*
*@paramstring$idCacheID
*@paramstring$fieldCacheID
*@paramint$offsetStep/valuetoadd
*@returnmixedNewvalueonsuccessorFALSEonfailure
*/
publicfunctionhincrbyfloat($key,$field,$value=1)
{
return$this->_redis->hIncrByFloat($key,$field,$value);
}
/**
*lpusharawvalue
*
*@paramstring$keyCacheID
*@paramstring$valuevalue
*@returnmixedNewvalueonsuccessorFALSEonfailure
*/
publicfunctionlpush($key,$value)
{
return$this->_redis->lPush($key,$value);
}
/**
*rpusharawvalue
*
*@paramstring$keyCacheID
*@paramstring$valuevalue
*@returnmixedNewvalueonsuccessorFALSEonfailure
*/
publicfunctionrpush($key,$value)
{
return$this->_redis->rPush($key,$value);
}
/**
*rpoparawvalue
*
*@paramstring$keyCacheID
*@paramstring$valuevalue
*@returnmixedNewvalueonsuccessorFALSEonfailure
*/
publicfunctionrpop($key)
{
return$this->_redis->rPop($key);
}
/**
*brpoparawvalue
*
*@paramstring$keyCacheID
*@paramstring$ontime阻塞等待时间
*@returnmixedNewvalueonsuccessorFALSEonfailure
*/
publicfunctionbrpop($key,$ontime=0)
{
return$this->_redis->brPop($key,$ontime);
}
/**
*lLenarawvalue
*
*@paramstring$keyCacheID
*@returnmixedValueonsuccessorFALSEonfailure
*/
publicfunctionllen($key)
{
return$this->_redis->lLen($key);
}
/**
*Incrementarawvalue
*
*@paramstring$idCacheID
*@paramint$offsetStep/valuetoadd
*@returnmixedNewvalueonsuccessorFALSEonfailure
*/
publicfunctionincrement($id,$offset=1)
{
return$this->_redis->exists($id)
?$this->_redis->incr($id,$offset)
:FALSE;
}
/**
*incrbyarawvalue
*
*@paramstring$keyCacheID
*@paramint$offsetStep/valuetoadd
*@returnmixedNewvalueonsuccessorFALSEonfailure
*/
publicfunctionincrby($key,$value=1)
{
return$this->_redis->incrby($key,$value);
}
/**
*setavalueexpiretime
*
*@paramstring$keyCacheID
*@paramint$secondsexpireseconds
*@returnmixedNewvalueonsuccessorFALSEonfailure
*/
publicfunctionexpire($key,$seconds)
{
return$this->_redis->expire($key,$seconds);
}
/**
*Incrementarawvalue
*
*@paramstring$idCacheID
*@paramint$offsetStep/valuetoadd
*@returnmixedNewvalueonsuccessorFALSEonfailure
*/
publicfunctionhset($alias,$key,$value)
{
return$this->_redis->hset($alias,$key,$value);
}
/**
*Incrementarawvalue
*
*@paramstring$idCacheID
*@paramint$offsetStep/valuetoadd
*@returnmixedNewvalueonsuccessorFALSEonfailure
*/
publicfunctionhget($alias,$key)
{
return$this->_redis->hget($alias,$key);
}
/**
*Incrementarawvalue
*
*@paramstring$idCacheID
*@returnmixedNewvalueonsuccessorFALSEonfailure
*/
publicfunctionhkeys($alias)
{
return$this->_redis->hkeys($alias);
}
/**
*Incrementarawvalue
*
*@paramstring$idCacheID
*@paramint$offsetStep/valuetoadd
*@returnmixedNewvalueonsuccessorFALSEonfailure
*/
publicfunctionhgetall($alias)
{
return$this->_redis->hgetall($alias);
}
/**
*Incrementarawvalue
*
*@paramstring$idCacheID
*@paramint$offsetStep/valuetoadd
*@returnmixedNewvalueonsuccessorFALSEonfailure
*/
publicfunctionhmget($alias,$key)
{
return$this->_redis->hmget($alias,$key);
}
/**
*delakeyvalue
*
*@paramstring$idCacheID
*@paramint$offsetStep/valuetoadd
*@returnmixedNewvalueonsuccessorFALSEonfailure
*/
publicfunctionhdel($alias,$key)
{
return$this->_redis->hdel($alias,$key);
}
/**
*delakeyvalue
*
*@paramstring$idCacheID
*@returnmixedNewvalueonsuccessorFALSEonfailure
*/
publicfunctionhvals($alias)
{
return$this->_redis->hvals($alias);
}
/**
*Incrementarawvalue
*
*@paramstring$idCacheID
*@paramint$offsetStep/valuetoadd
*@returnmixedNewvalueonsuccessorFALSEonfailure
*/
publicfunctionhmset($alias,$array)
{
return$this->_redis->hmset($alias,$array);
}
/**
*Decrementarawvalue
*
*@paramstring$idCacheID
*@paramint$offsetStep/valuetoreduceby
*@returnmixedNewvalueonsuccessorFALSEonfailure
*/
publicfunctiondecrement($id,$offset=1)
{
return$this->_redis->exists($id)
?$this->_redis->decr($id,$offset)
:FALSE;
}
/**
*Cleancache
*
*@returnbool
*@seeRedis::flushDB()
*/
publicfunctionclean()
{
return$this->_redis->flushDB();
}
/**
*Getcachedriverinfo
*
*@paramstringNotsupportedinRedis.
*Onlyincludedinordertooffera
*consistentcacheAPI.
*@returnarray
*@seeRedis::info()
*/
publicfunctioncache_info($type=NULL)
{
return$this->_redis->info();
}
/**
*Getcachemetadata
*
*@paramstringCachekey
*@returnarray
*/
publicfunctionget_metadata($key)
{
$value=$this->get($key);
if($value)
{
returnarray(
'expire'=>time()+$this->_redis->ttl($key),
'data'=>$value
);
}
returnFALSE;
}
/**
*CheckifRedisdriverissupported
*
*@returnbool
*/
publicfunctionis_supported()
{
if(extension_loaded('redis'))
{
return$this->_setup_redis();
}
else
{
log_message('debug','TheRedisextensionmustbeloadedtouseRediscache.');
returnFALSE;
}
}
/**
*SetupRedisconfigandconnection
*
*LoadsRedisconfigfileifpresent.Willhaltexecution
*ifaRedisconnectioncan'tbeestablished.
*
*@returnbool
*@seeRedis::connect()
*/
protectedfunction_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=newRedis();
try
{
if($config['socket_type']==='unix')
{
$success=$this->_redis->connect($config['socket']);
}
else//tcpsocket
{
$success=$this->_redis->connect($config['host'],$config['port'],$config['timeout']);
}
if(!$success)
{
log_message('debug','Cache:Redisconnectionrefused.Checktheconfig.');
returnFALSE;
}
}
catch(RedisException$e)
{
log_message('debug','Cache:Redisconnectionrefused('.$e->getMessage().')');
returnFALSE;
}
if(isset($config['password']))
{
$this->_redis->auth($config['password']);
}
returnTRUE;
}
/**
*Classdestructor
*
*ClosestheconnectiontoRedisifpresent.
*
*@returnvoid
*/
publicfunction__destruct()
{
if($this->_redis)
{
$this->_redis->close();
}
}
}
/*EndoffileCache_redis.php*/
/*Location:./system/libraries/Cache/drivers/Cache_redis.php*/
更多关于CodeIgniter相关内容感兴趣的读者可查看本站专题:《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《php优秀开发框架总结》、《Yii框架入门及常用技巧总结》、《php缓存技术总结》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家基于CodeIgniter框架的PHP程序设计有所帮助。