我在我的任务中使用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
对此问题表示赞赏。
答案 0 :(得分:0)
正如我所看到的,您的驱动程序名称不是以Capitalized开头的,所以 它可能是你的问题的原因。
因为根据codeigniter,类的命名规则如下
命名约定
更改您的文件名 来自 cache_redis_extended.php 到 Cache_redis_extended.php
我希望它会对你有所帮助。