当前位置:首页 > CMS教程 > 其它CMS > 列表

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

发布:smiling 来源: PHP粉丝网  添加日期:2021-08-06 10:47:04 浏览: 评论:0 

这篇文章主要介绍了CI框架中redis缓存相关操作文件,结合完整示例演示了CI框架redis缓存相关操作技巧,需要的朋友可以参考下。

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

redis缓存类文件位置:

'ci\system\libraries\Cache\drivers\Cache_redis.php'

  1. <?php 
  2. /** 
  3.  * CodeIgniter 
  4.  * 
  5.  * An open source application development framework for PHP 5.2.4 or newer 
  6.  * 
  7.  * NOTICE OF LICENSE 
  8.  * 
  9.  * Licensed under the Open Software License version 3.0 
  10.  * 
  11.  * This source file is subject to the Open Software License (OSL 3.0) that is 
  12.  * bundled with this package in the files license.txt / license.rst. It is 
  13.  * also available through the world wide web at this URL: 
  14.  * http://opensource.org/licenses/OSL-3.0 
  15.  * If you did not receive a copy of the license and are unable to obtain it 
  16.  * through the world wide web, please send an email to 
  17.  * licensing@ellislab.com so we can send you a copy immediately. 
  18.  * 
  19.  * @package   CodeIgniter 
  20.  * @author   EllisLab Dev Team 
  21.  * @copyright  Copyright (c) 2008 - 2014, EllisLab, Inc. (http://ellislab.com/) 
  22.  * @license   http://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0) 
  23.  * @link    http://codeigniter.com 
  24.  * @since    Version 3.0 
  25.  * @filesource 
  26.  */ 
  27. defined('BASEPATH') OR exit('No direct script access allowed'); 
  28. /** 
  29.  * CodeIgniter Redis Caching Class 
  30.  * 
  31.  * @package  CodeIgniter 
  32.  * @subpackage Libraries 
  33.  * @category  Core 
  34.  * @author   Anton Lindqvist <anton@qvister.se> 
  35.  * @link 
  36.  */ 
  37. class CI_Cache_redis extends CI_Driver 
  38.   /** 
  39.    * Default config 
  40.    * 
  41.    * @static 
  42.    * @var array 
  43.    */ 
  44.   protected static $_default_config = array
  45.     /* 
  46.     'socket_type' => 'tcp', 
  47.     'host' => '127.0.0.1', 
  48.     'password' => NULL, 
  49.     'port' => 6379, 
  50.     'timeout' => 0 
  51.     */ 
  52.   ); 
  53.   /** 
  54.    * Redis connection 
  55.    * 
  56.    * @var Redis 
  57.    */ 
  58.   protected $_redis
  59.   /** 
  60.    * Get cache 
  61.    * 
  62.    * @param  string like *$key* 
  63.    * @return array(hash) 
  64.    */ 
  65.   public function keys($key
  66.   { 
  67.     return $this->_redis->keys($key); 
  68.   } 
  69.   /** 
  70.    * Get cache 
  71.    * 
  72.    * @param  string Cache ID 
  73.    * @return mixed 
  74.    */ 
  75.   public function get($key
  76.   { 
  77.     return $this->_redis->get($key); 
  78.   } 
  79.   /** 
  80.    * mGet cache 
  81.    * 
  82.    * @param  array  Cache ID Array 
  83.    * @return mixed 
  84.    */ 
  85.   public function mget($keys
  86.   { 
  87.     return $this->_redis->mget($keys); 
  88.   } 
  89.   /** 
  90.    * Save cache 
  91.    * 
  92.    * @param  string $id Cache ID 
  93.    * @param  mixed  $data  Data to save 
  94.    * @param  int $ttl  Time to live in seconds 
  95.    * @param  bool  $raw  Whether to store the raw value (unused) 
  96.    * @return bool  TRUE on success, FALSE on failure 
  97.    */ 
  98.   public function save($id$data$ttl = 60, $raw = FALSE) 
  99.   { 
  100.     return ($ttl
  101.       ? $this->_redis->setex($id$ttl$data
  102.       : $this->_redis->set($id$data); 
  103.   } 
  104.   /** 
  105.    * Delete from cache 
  106.    * 
  107.    * @param  string Cache key 
  108.    * @return bool 
  109.    */ 
  110.   public function delete($key
  111.   { 
  112.     return ($this->_redis->delete($key) === 1); 
  113.   } 
  114.   /** 
  115.    * hIncrBy a raw value 
  116.    * 
  117.    * @param  string $id Cache ID 
  118.    * @param  string $field Cache ID 
  119.    * @param  int $offset Step/value to add 
  120.    * @return mixed  New value on success or FALSE on failure 
  121.    */ 
  122.   public function hincrby($key$field$value = 1) 
  123.   { 
  124.     return $this->_redis->hIncrBy($key$field$value); 
  125.   } 
  126.   /** 
  127.    * hIncrByFloat a raw value 
  128.    * 
  129.    * @param  string $id Cache ID 
  130.    * @param  string $field Cache ID 
  131.    * @param  int $offset Step/value to add 
  132.    * @return mixed  New value on success or FALSE on failure 
  133.    */ 
  134.   public function hincrbyfloat($key$field$value = 1) 
  135.   { 
  136.     return $this->_redis->hIncrByFloat($key$field$value); 
  137.   } 
  138.   /** 
  139.    * lpush a raw value 
  140.    * 
  141.    * @param  string $key  Cache ID 
  142.    * @param  string $value value 
  143.    * @return mixed  New value on success or FALSE on failure 
  144.    */ 
  145.   public function lpush($key$value
  146.   { 
  147.     return $this->_redis->lPush($key$value); 
  148.   } 
  149.    /** 
  150.    * rpush a raw value 
  151.    * 
  152.    * @param  string $key  Cache ID 
  153.    * @param  string $value value 
  154.    * @return mixed  New value on success or FALSE on failure 
  155.    */ 
  156.   public function rpush($key$value
  157.   { 
  158.     return $this->_redis->rPush($key$value); 
  159.   } 
  160.   /** 
  161.    * rpop a raw value 
  162.    * 
  163.    * @param  string $key  Cache ID 
  164.    * @param  string $value value 
  165.    * @return mixed  New value on success or FALSE on failure 
  166.    */ 
  167.   public function rpop($key
  168.   { 
  169.     return $this->_redis->rPop($key); 
  170.   } 
  171.    /** 
  172.    * brpop a raw value 
  173.    * 
  174.    * @param  string $key  Cache ID 
  175.    * @param  string $ontime 阻塞等待时间 
  176.    * @return mixed  New value on success or FALSE on failure 
  177.    */ 
  178.   public function brpop($key,$ontime=0) 
  179.   { 
  180.     return $this->_redis->brPop($key,$ontime); 
  181.   } 
  182.   /** 
  183.    * lLen a raw value 
  184.    * 
  185.    * @param  string $key  Cache ID 
  186.    * @return mixed  Value on success or FALSE on failure 
  187.    */ 
  188.   public function llen($key
  189.   { 
  190.     return $this->_redis->lLen($key); 
  191.   } 
  192.   /** 
  193.    * Increment a raw value 
  194.    * 
  195.    * @param  string $id Cache ID 
  196.    * @param  int $offset Step/value to add 
  197.    * @return mixed  New value on success or FALSE on failure 
  198.    */ 
  199.   public function increment($id$offset = 1) 
  200.   { 
  201.     return $this->_redis->exists($id
  202.       ? $this->_redis->incr($id$offset
  203.       : FALSE; 
  204.   } 
  205.   /** 
  206.    * incrby a raw value 
  207.    * 
  208.    * @param  string $key Cache ID 
  209.    * @param  int $offset Step/value to add 
  210.    * @return mixed  New value on success or FALSE on failure 
  211.    */ 
  212.   public function incrby($key$value = 1) 
  213.   { 
  214.     return $this->_redis->incrby($key$value); 
  215.   } 
  216.   /** 
  217.    * set a value expire time 
  218.    * 
  219.    * @param  string $key Cache ID 
  220.    * @param  int $seconds expire seconds 
  221.    * @return mixed  New value on success or FALSE on failure 
  222.    */ 
  223.   public function expire($key$seconds
  224.   { 
  225.     return $this->_redis->expire($key$seconds); 
  226.   } 
  227.   /** 
  228.    * Increment a raw value 
  229.    * 
  230.    * @param  string $id Cache ID 
  231.    * @param  int $offset Step/value to add 
  232.    * @return mixed  New value on success or FALSE on failure 
  233.    */ 
  234.   public function hset($alias,$key$value
  235.   { 
  236.     return $this->_redis->hset($alias,$key$value); 
  237.   } 
  238.   /** 
  239.    * Increment a raw value 
  240.    * 
  241.    * @param  string $id Cache ID 
  242.    * @param  int $offset Step/value to add 
  243.    * @return mixed  New value on success or FALSE on failure 
  244.    */ 
  245.   public function hget($alias,$key
  246.   { 
  247.     return $this->_redis->hget($alias,$key); 
  248.   } 
  249.   /** 
  250.    * Increment a raw value 
  251.    * 
  252.    * @param  string $id Cache ID 
  253.    * @return mixed  New value on success or FALSE on failure 
  254.    */ 
  255.   public function hkeys($alias
  256.   { 
  257.     return $this->_redis->hkeys($alias); 
  258.   } 
  259.   /** 
  260.    * Increment a raw value 
  261.    * 
  262.    * @param  string $id Cache ID 
  263.    * @param  int $offset Step/value to add 
  264.    * @return mixed  New value on success or FALSE on failure 
  265.    */ 
  266.   public function hgetall($alias
  267.   { 
  268.     return $this->_redis->hgetall($alias); 
  269.   } 
  270.   /** 
  271.    * Increment a raw value 
  272.    * 
  273.    * @param  string $id Cache ID 
  274.    * @param  int $offset Step/value to add 
  275.    * @return mixed  New value on success or FALSE on failure 
  276.    */ 
  277.   public function hmget($alias,$key
  278.   { 
  279.     return $this->_redis->hmget($alias,$key); 
  280.   } 
  281.   /** 
  282.    * del a key value 
  283.    * 
  284.    * @param  string $id Cache ID 
  285.    * @param  int $offset Step/value to add 
  286.    * @return mixed  New value on success or FALSE on failure 
  287.    */ 
  288.   public function hdel($alias,$key
  289.   { 
  290.     return $this->_redis->hdel($alias,$key); 
  291.   } 
  292.   /** 
  293.    * del a key value 
  294.    * 
  295.    * @param  string $id Cache ID 
  296.    * @return mixed  New value on success or FALSE on failure 
  297.    */ 
  298.   public function hvals($alias
  299.   { 
  300.     return $this->_redis->hvals($alias); 
  301.   } 
  302.   /** 
  303.    * Increment a raw value 
  304.    * 
  305.    * @param  string $id Cache ID 
  306.    * @param  int $offset Step/value to add 
  307.    * @return mixed  New value on success or FALSE on failure 
  308.    */ 
  309.   public function hmset($alias,$array
  310.   { 
  311.     return $this->_redis->hmset($alias,$array); 
  312.   } 
  313.   /** 
  314.    * Decrement a raw value 
  315.    * 
  316.    * @param  string $id Cache ID 
  317.    * @param  int $offset Step/value to reduce by 
  318.    * @return mixed  New value on success or FALSE on failure 
  319.    */ 
  320.   public function decrement($id$offset = 1) 
  321.   { 
  322.     return $this->_redis->exists($id
  323.       ? $this->_redis->decr($id$offset
  324.       : FALSE; 
  325.   } 
  326.   /** 
  327.    * Clean cache 
  328.    * 
  329.    * @return bool 
  330.    * @see   Redis::flushDB() 
  331.    */ 
  332.   public function clean() 
  333.   { 
  334.     return $this->_redis->flushDB(); 
  335.   } 
  336.   /** 
  337.    * Get cache driver info 
  338.    * 
  339.    * @param  string Not supported in Redis. 
  340.    *     Only included in order to offer a 
  341.    *     consistent cache API. 
  342.    * @return array 
  343.    * @see   Redis::info() 
  344.    */ 
  345.   public function cache_info($type = NULL) 
  346.   { 
  347.     return $this->_redis->info(); 
  348.   } 
  349.   /** 
  350.    * Get cache metadata 
  351.    * 
  352.    * @param  string Cache key 
  353.    * @return array 
  354.    */ 
  355.   public function get_metadata($key
  356.   { 
  357.     $value = $this->get($key); 
  358.     if ($value
  359.     { 
  360.       return array
  361.         'expire' => time() + $this->_redis->ttl($key), 
  362.         'data' => $value 
  363.       ); 
  364.     } 
  365.     return FALSE; 
  366.   } 
  367.   /** 
  368.    * Check if Redis driver is supported 
  369.    * 
  370.    * @return bool 
  371.    */ 
  372.   public function is_supported() 
  373.   { 
  374.     if (extension_loaded('redis')) 
  375.     { 
  376.       return $this->_setup_redis(); 
  377.     } 
  378.     else 
  379.     { 
  380.       log_message('debug''The Redis extension must be loaded to use Redis cache.'); 
  381.       return FALSE; 
  382.     } 
  383.   } 
  384.   /** 
  385.    * Setup Redis config and connection 
  386.    * 
  387.    * Loads Redis config file if present. Will halt execution 
  388.    * if a Redis connection can't be established. 
  389.    * 
  390.    * @return bool 
  391.    * @see   Redis::connect() 
  392.    */ 
  393.   protected function _setup_redis() 
  394.   { 
  395.     $config = array(); 
  396.     $CI =& get_instance(); 
  397.     if ($CI->config->load('redis', TRUE, TRUE)) 
  398.     { 
  399.       $config += $CI->config->item('redis'); 
  400.     } 
  401.     $config = array_merge(self::$_default_config$config); 
  402.     $config = !emptyempty($config['redis'])?$config['redis']:$config
  403.     $this->_redis = new Redis(); 
  404.     try 
  405.     { 
  406.       if ($config['socket_type'] === 'unix'
  407.       { 
  408.         $success = $this->_redis->connect($config['socket']); 
  409.       } 
  410.       else // tcp socket 
  411.       { 
  412.         $success = $this->_redis->connect($config['host'], $config['port'], $config['timeout']); 
  413.       } 
  414.       if ( ! $success
  415.       { 
  416.         log_message('debug''Cache: Redis connection refused. Check the config.'); 
  417.         return FALSE; 
  418.       } 
  419.     } 
  420.     catch (RedisException $e
  421.     { 
  422.       log_message('debug''Cache: Redis connection refused ('.$e->getMessage().')'); 
  423.       return FALSE; 
  424.     } 
  425.     if (isset($config['password'])) 
  426.     { 
  427.       $this->_redis->auth($config['password']); 
  428.     } 
  429.     return TRUE; 
  430.   } 
  431.   /** 
  432.    * Class destructor 
  433.    * 
  434.    * Closes the connection to Redis if present. 
  435.    * 
  436.    * @return void 
  437.    */ 
  438.   public function __destruct() 
  439.   { 
  440.     if ($this->_redis) 
  441.     { 
  442.       $this->_redis->close(); 
  443.     } 
  444.   } 
  445. /* End of file Cache_redis.php */ 
  446. /* Location: ./system/libraries/Cache/drivers/Cache_redis.php */

Tags: CI框架 redis

分享到: