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程序设计有所帮助。