gpt4 book ai didi

codeigniter - 如何扩展 Code igniter 缓存类 Redis 类

转载 作者:可可西里 更新时间:2023-11-01 11:28:34 26 4
gpt4 key购买 nike

我在我的一项任务中使用 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

感谢任何帮助解决此问题。

最佳答案

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

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

命名约定

  1. 文件名必须大写。例如:Myclass.php
  2. 类声明必须大写。例如:类 Myclass
  3. 类名和文件名必须匹配。

更改文件名来自 cache_redis_extended.phpCache_redis_extended.php

希望对您有所帮助。

关于codeigniter - 如何扩展 Code igniter 缓存类 Redis 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42943068/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com