php ci框架redis例子,CI框架中redis缓存相关操作文件示例代码

本文实例讲述了CI框架中redis缓存相关操作文件。分享给大家供大家参考,具体如下:

redis缓存类文件位置:

'ci\system\libraries\Cache\drivers\Cache_redis.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

* @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框架的PHP程序设计有所帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值