如何扩展Code igniter缓存类Redis类

时间:2017-03-22 04:57:51

标签: codeigniter caching redis

我在我的任务中使用redis进行缓存。我正在使用CI默认redis库来实现此目的。 现在库的问题是它有一些特定的方法集,用于设置,获取,删除,递增和递减redis键和放大器。值。

我想要更多的redis功能,如lpush,rpush,lrem,lrange等。 所以为了实现这一点,我试图扩展默认的CI redis类。我将它放在application / libraries / driver / cache_redis_extended.php中。 我的这个类的代码如下。

<?php

 defined('BASEPATH') OR exit('No direct script access allowed');

 class Cache_redis_extended extends CI_Cache_redis
{

    function __construct(){
         parent::self;
}

public function rpush($list, $data)
{
    $push = $this->_redis->multi(Redis::PIPELINE);      
    return $push->rpush($list, json_encode($data));
}

public function lrem($list, $data)
{
    if((is_string($data) && (is_object(json_decode($data)) ||      is_array(json_decode($data))))) {
        $data = $data;
    }else{
        json_encode($data);
    }
    return $this->_redis->lrem($list,-1, $data);
}


public function __destruct()
{
    if ($this->_redis)
    {
        $this->_redis->close();
    }
}

}

在我的模型中我加载此类如下

 $CI->load->driver('cache', array('adapter' => 'redis'));

但系统显示错误

无法加载请求的类:cache_redis_extended

对此问题表示赞赏。

1 个答案:

答案 0 :(得分:0)

正如我所看到的,您的驱动程序名称不是以Capitalized开头的,所以 它可能是你的问题的原因。

因为根据codeigniter,类的命名规则如下

命名约定

  1. 文件名必须大写。例如:Myclass.php
  2. 类声明必须大写。例如:class Myclass
  3. 班级名称和文件名必须匹配。
  4. 更改您的文件名 来自 cache_redis_extended.php Cache_redis_extended.php

    我希望它会对你有所帮助。