테스트 사이트 - 개발 중인 베타 버전입니다

그누보드5(영카트5)용 redis 쿼리 캐시 플러그인

다운로드 1.png
캐시2.PNG

- redis 서비스를 이용하여 db 쿼리 캐시 플러그인입니다.

- 접속자가 많은 사이트나, 복잡한 쿼리를 많이 사용하는 사이트에서 성능을 향상시킬수 있는 솔루션입니다.

- 간단한 함수 사용만으로 사용할수 있습니다. 

 

1. 사전 내용

 - PHP 5.3 이상에서 테스트되었습니다. 5.2 이하 버전에선 오동작할수 있습니다.
 - 서버에 phpredis 가 설치되어 있어야 합니다. 
 - phpredis 설치방법은  http://blog.bongwork.com/archives/44 를 참조하세요.
 - common.php 파일에 redis 객체를 미리 생성하면, 접속시마다 생성하지 않음으로, 네트웍 리소스를 절약할수 있습니다.
   예제 
 try {
    $redis = new Redis();
    $redis->connect(REDIS_SERVER_IP, REDIS_SERVER_PORT, 5);
} catch( Exception $e) {
    echo $e->getMessage();
}

2. 디렉토리 구성 및 파일
 - /lib/RedisCache.class.php 메인 캐시용 클래스 
 - /extend/redis_cache_functions.php   쿼리 캐시 함수용 선언 함수파일
 - /redis_test.php  : 테스트용 php 파일
 - /README.txt

3. 설정방법
 - redis 서버가 로컬(127.0.0.1) 이 아닌 다른 서버에서 실행되는 경우 RedisCache.class.php 의 default_host와 default_port를 해당 서버정보로 변경해주세요.
 (보통 사용하지 않으나,  redis 서버의 auth 기능을 사용하고 있는 경우는 접속 코드에 auth 관련 코드를 추가해야 합니다.)

4. 사용방법
  - 압축을 푼 다음 RedisCache.class.php 와 redis_cache_functions.php 파일을 그누보드5(영카트5)의 lib와 extend 디렉토리로 업로드 합니다   - 첨부된 redis_test.php 를 작성하여 실행해봅니다. (관리자로 실행하면 디버깅 정보가 노출됩니다. 성능 확인가능)

5. 라이센스
  - GPL 을 따릅니다. 개인사이트 상업사이트에서 사용가능합니다.
  - 본인외에 타사이트에 위 소스를 게재할경우 사전 동의가 필요합니다.
  - 본 코드를 첨부한 솔루션을 판매하는 경우  따로 연락바랍니다.


 

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

댓글 33개

오웃 좋습니다. 다운로드로 포인트 기부~~~
요것이 어떤 물건인지 찬찬히 살펴보겠습니다.
수고하셨습니다. ~~
대단!!!
대단합니다! 강추
멋진거 올려주셨네요
포인트 모아서 사용해보겠습니다
감사합니다
다운받아서 redis 는 서버에 설치했고 정보도 확인했습니다만...
redis-test.php 실행시키면 흰색 화면만 나오는군요
다르게 쿼리 실행시켜봐도 흰색 화면... 뭐가 문제일지 ㅠ_ㅠ
관리자로 로그인후에 실행하셔도 동일한가요? 뭔가 오류 메세지가 나올것 같은데요..
혹시 common.php 의 session.save_path를 수정 하셨나요? 만약 redis 를 session.save_path 에서 사용 안하실거면, php.ini 에서 session 관련 설정은 빼셔야 합니다.
네 관리자로 로그인해도 아무런 메세지가 나오지를 않네요

session.save_path 부분 2줄은 제외하고 php.ini 에
extension=/usr/lip64/php/modules/redis.so 만 입력했습니다.
파일 경로는 맞습니다 ^^;

에러라도 뜨면 뭔가 확인이라도 해볼텐데 아무런 메세지 없는
빈페이지만 뜨네요 소스보기해도 아무것도 없고...
extension 경로에 redis.so 파일 있나요?
네 있습니다
하얀색이 나왔다면, 오류가 났을것 같네요.
일단 코드를 조금 수정하여 오류를 확인해봐야 할것 같습니다.

/lib/RedisCache.class.php 에 해당 코드 부분에
echo $e->getMessage(); 코르를 추가해주세요.

try {
$this->add_debug_info("[" . __METHOD__ . "()] redis 서비스에 접속합니다.");

$redis = new Redis();
$redis->connect($this->default_host, $this->default_port, 5);
$this->data_store = $redis;
$this->use_redis = true;
} catch (Exception $e) {
echo $e->getMessage();
$this->use_redis = false;
$this->add_debug_info("[" . __METHOD__ . "()] ".$e->getMessage(). " redis 서버에 접속할수 없습니다.");
}
redis만 설치 햇네요 포인트 모아야지 ㅠㅠ
왕.. 아직 포인..트 안모임 ㅠㅠ
- common.php 파일에 redis 객체를 미리 생성하면, 접속시마다 생성하지 않음으로, 네트웍 리소스를 절약할수 있습니다.
예제
try {
$redis = new Redis();
$redis->connect(REDIS_SERVER_IP, REDIS_SERVER_PORT, 5);
} catch( Exception $e) {
echo $e->getMessage();
}
이부분을 어디쯤 넣어야 할까요?
안녕하세요.

플러그인 감사드립니다.

php7에서는 안되는 듯 한데 서버 설정에서 체크가 필요한 부분이 있나요?
잘 작동합니다
감사합니다 ^^
PHP 7.4에서 적용 잘 됩니다. 감사합니다.
저장은 직접 구현해야되는거군요?
안녕하세요,

이걸 이용해서 그누보드 리스트와 댓글, 새글등 쿼리 돌만한 부분들 Hook걸어 만들고 있습니다. 글 수정과 삭제 부분만 잘 짜면 제가 생각하는 형태가 될 것 같은데 머리가 안돌아가네요..

정말 많은 도움이 되었습니다. 감사합니다.
포인트모아서 사용해 보겠습니다.
포인트가 없어서..모와서 봐야겠어요

php8.2 에서도 적용이 됩니다.

php.ini 위치를 정확히 파악해서 적용하는게 관건이더라구요.

명랑폐인님

redis를 이용해서 같은 DB를 사용하고 있고 그누를 아래와 같이 2개를 설치하고 로그인 세션공유도 할 수 있는 건가요?

1)도메인/ 에 그누설치

2)도메인/sub/ 에 그누설치

dbconfig.php에서 회원부분 공유를 해주면 각각은 로그인이 되는데, 서로 세션공유는 되지 않더라구요. 

( common.php에서 session_save_path를 같게 한다던지, data/session 폴더 심볼릭링크를 한다던지 등 방법을 사용했지만 세션공유는 되지 않더라구요. )

 

redis관련 세션공유 검색을 해도 비슷한 자료도 찾을 수가 없었습니다. 혹시 redis를 이용해서 그누 2개 설치시 로그인 세션공유를 할 수 있는 팁이라도 말씀해주시면 공부를 더 해보겠습니다.

감사합니다. 일단 선 다운~~

게시판 목록

그누보드5 플러그인

그누보드 호환이거나 독립적으로 실행되는 플러그인을 소개합니다.
글쓰기