그누 memcached 캐싱 > 자유게시판

자유게시판

그누 memcached 캐싱 정보

그누 memcached 캐싱

본문

이번에 작업하다가

memcached 캐싱시스템을 만들엇는데 필요하실분이 계실까요..?
추천
0
  • 복사

댓글 36개

지금 실행중인건 전체 페이지 자체를 캐싱합니다.
캐싱시간은 1분으로 설정했으나 언제든지 변경가능합니다~

ps.조회수 포기 하셔야 합니다ㅠ
효율은 그다지 좋지가 않아요 ㅠㅠ

말그대로 트래픽 폭탄 전용 시스템입니다 ㅎㅎ

지금 막 만들어서 점점 다듬어야 겠지요 ㅠㅠ
최근 게시물을 캐싱하겠죠.

보드데이타를 제대로 캐싱할려면, mysql 5.6에서서처럼 db자체가 캐싱을 해주면 됩니다. 아 빨리 5.6 정식버전이 나왔으면...
폐인님 이번에 나올 mysql 메모리 캐쉬 혹시
nosql 부분에 메모리 캐쉬랑 착각 하신건가요?

NOSQL로 게시판 만드시려고요?
트리거를 이용해서 데이타가 변경되면, memcached 데이타를 변경할수 있습니다. 주로 조회수, 추천수가 변경되는걸 체크할때 쓰일것 같습니다.
캐싱이 필요한 페이지는 게시판별로 첫페이지(최근글 20개정도)에 해당되니까 이를 캐싱하면 됩니다.

솔직히 mysql 데이타를 제대로 캐싱할거면, mysql서버의 bin_log를 모니터링하고 있다가, 게시물 데이타가 변경되면, 바로바로 memcached를 변경하도록 만들어도 됩니다.
아니면, 1초에 한번씩 memcached에 캐싱 페이지를 만들어도 되구요.
5.6.2 를 써보았습니다!

플러그인 설치후에 날라다니는 그 모습이란...

db 자체 캐싱을 원하시는 거면!!!! 곧 대령하겠사옵니다^^
코코남편님께 질문을...
제대로 사용하려면 아래처럼 해야하는거 맞지요?

<?php session_start(); ?>
<pre>
<?php
$presessdata = @$_SESSION["data"];
$_SESSION["data"] = @
$_SESSION["data"] + 1;

$memcache = new Memcache;
$memcache->connect("localhost", 11211);
print_r($memcache->getStats());
$items = array(    'key1' => 'value1',    'key2' => 'value2',    'key3' => 'value3');
foreach ($items as $k => $v) {   
  $memcache->set($k, $v);
}

var_dump($memcache->get(array('key1', 'key3')));
var_dump($memcache->get('key2'));
var_dump($memcache->get('key4'));
?>

SESSION: <?php echo $_SESSION["data"]; ?>
</pre>
추가로 설명하자면 connect 보다 add 좋아요.

connect 즉각 연결하라는 거지만.
add에다 넣으면 일단 저장했다가
처음 저장이나 불러오기 발생시 연결하게 되어 있습니다.
이놈에 명령어 왜 이따위 로 지었는지
저도 처음에 add가 save 관련인줄 알았습니다.

http://kr2.php.net/manual/en/memcache.add.php
가령 게시물을 페이지대로 캐쉬를 한다고 해봐요..
아주 생각에는 아주 적합한 형태 일겁니다.
30개씩 100페이지를 나누어 캐쉬를 한다고 칩시다.

데이터가 쌓이거나 수정하는건 별로 어렵지 않습니다.
문제가 무엇이냐면 삭제가 문제 입니다.
데이터 중간에 특히 1페이지에 1번 게시물 삭제한다고 하면
중간에 빵꾸가 난걸 때우기 위해 위에 게시물이 하나씩 밀려야 하는 일이 생깁니다.

1페이지 1번 게시물 지웠다고 캐쉬를 전부 지워야하는 사태가 벌어 집니다.
엄청난 오버헤드 입니다.

이래서 캐쉬 적용하기 힘듭니다.
트리거에서 지원해주면 모든게 해결됩니다.
memcached가 mysql 엔진에 탑제된다는것은 둘간의 통신방법을 mysql 명령어로도 지원된다는 얘기 아닐까요?
트리거만 하더라도 플러그인형태로 udf를 만들면 현재 5.5버전에서도 가능하잖아요.
정리하면, 현재 5.5 에서는 memcached를 mysql 플러그인으로 설치하여 UDF(사용자정의함수) 를 만들수 있음.
테이블 데이타가 변경될때, UDF에 트리거를 사용하여 memcached 데이타를 변경할수 있음.
가능은한데, 좀 불편하고, 플러그인설치도 어렵고, 정밀하게 제어해야 함. 암튼 빨리좀 보자 mysql5.6

mysql 5.6에서는 사용자정의함수의 호출없이도, memcached호출만 하면 알아서 변경된 데이타가 나옴. 자세한건 봐야겠지만, 이런 컨셉임.
© SIRSOFT
현재 페이지 제일 처음으로