足球游戏_中国足彩网¥体育资讯$

CI框架中redis缓存相关操作文件示例代码
来源:易贤网 阅读:2052 次 日期:2016-08-22 15:01:55
温馨提示:易贤网小编为您整理了“CI框架中redis缓存相关操作文件示例代码”,方便广大网友查阅!

本文实例讲述了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框架的PHP程序设计有所帮助。

中国足彩网信息请查看网络编程
由于各方面情况的不断调整与变化,易贤网提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!
关于我们 | 联系我们 | 人才招聘 | 网站声明 | 网站帮助 | 非正式的简要咨询 | 简要咨询须知 | 加入群交流 | 手机站点 | 投诉建议
工业和信息化部备案号:滇ICP备2023014141号-1 足球游戏_中国足彩网¥体育资讯$ 滇公网安备53010202001879号 人力资源服务许可证:(云)人服证字(2023)第0102001523号
云南网警备案专用图标
联系电话:0871-65317125(9:00—18:00) 获取招聘考试信息及咨询关注公众号:hfpxwx
咨询QQ:526150442(9:00—18:00)版权所有:易贤网
云南网警报警专用图标