【问题标题】:How to extend Code igniter cache class Redis class如何扩展 Code igniter 缓存类 Redis 类
【发布时间】:2021-10-08 17:38:32
【问题描述】:

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


    【解决方案1】:

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

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

    命名约定

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

    更改您的文件名 来自 cache_redis_extended.php Cache_redis_extended.php

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 2020-03-17
      • 1970-01-01
      • 2014-10-17
      • 1970-01-01
      • 2012-06-06
      • 1970-01-01
      • 2016-10-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多