2017-03-22 2 views
0

내 할당 중 하나에서 캐싱에 redis를 사용하고 있습니다. 이 목적으로 CI 기본 redis 라이브러리를 사용하고 있습니다. 이제 라이브러리의 문제는 redis keys & 값을 설정, 가져 오기, 삭제, 증가 및 감소시키는 데 사용되는 특정 메소드 세트를 가지고 있다는 것입니다.코드 확장기 캐시 클래스 Redis 클래스

lpush, rpush, lrem, lrange 등과 같은 redis의 추가 기능이 필요합니다. 이렇게하려면 기본 CI redis 클래스를 확장하려고합니다. 어느 응용 프로그램/라이브러리/드라이버/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

임의의 시간 elp는이 문제에 대해 높이 평가됩니다.

답변

0

드라이버 이름이 Capitalized로 시작되지 않으므로, 문제의 원인이 될 수 있습니다.

명명 규칙

  1. 파일 이름을 다음과 같이 클래스의 CodeIgniter의 이름 지정 규칙에 따라하는 대문자로해야하기 때문에. 예 : Myclass.php
  2. 클래스 선언은 대문자 여야합니다. 예 : class Myclass
  3. 클래스 이름과 파일 이름이 일치해야합니다.
내가 당신을 위해 도움이 될 것입니다 희망 Cache_redis_extended.php

cache_redis_extended.php 에서 파일 이름 을 변경

.