정리하면, 현재 5.5 에서는 memcached를 mysql 플러그인으로 설치하여 UDF(사용자정의함수) 를 만들수 있음.
테이블 데이타가 변경될때, UDF에 트리거를 사용하여 memcached 데이타를 변경할수 있음.
가능은한데, 좀 불편하고, 플러그인설치도 어렵고, 정밀하게 제어해야 함. 암튼 빨리좀 보자 mysql5.6
mysql 5.6에서는 사용자정의함수의 호출없이도, memcached호출만 하면 알아서 변경된 데이타가 나옴. 자세한건 봐야겠지만, 이런 컨셉임.
댓글 36개
말씀만 하시면 커스터 마이징해서 대령하겠습니다^^
웹톡 예전에 정말 잘썼었습니다^^
왜 안쓰세요? 얼른 쓰셔요.
보드에 테이블도 캐싱이 가능 합니까?
데이터 동기화 어떻게 하십니까?
캐싱시간은 1분으로 설정했으나 언제든지 변경가능합니다~
ps.조회수 포기 하셔야 합니다ㅠ
말그대로 트래픽 폭탄 전용 시스템입니다 ㅎㅎ
지금 막 만들어서 점점 다듬어야 겠지요 ㅠㅠ
보드데이타를 제대로 캐싱할려면, mysql 5.6에서서처럼 db자체가 캐싱을 해주면 됩니다. 아 빨리 5.6 정식버전이 나왔으면...
nosql 부분에 메모리 캐쉬랑 착각 하신건가요?
NOSQL로 게시판 만드시려고요?
제가 알기로는 noSQL쪽만 되는 것 같던대요.
캐싱이 필요한 페이지는 게시판별로 첫페이지(최근글 20개정도)에 해당되니까 이를 캐싱하면 됩니다.
솔직히 mysql 데이타를 제대로 캐싱할거면, mysql서버의 bin_log를 모니터링하고 있다가, 게시물 데이타가 변경되면, 바로바로 memcached를 변경하도록 만들어도 됩니다.
아니면, 1초에 한번씩 memcached에 캐싱 페이지를 만들어도 되구요.
플러그인 설치후에 날라다니는 그 모습이란...
db 자체 캐싱을 원하시는 거면!!!! 곧 대령하겠사옵니다^^
memcached 설정 했다가 PHP 소스 뜯어 고쳐야 되어서 접은 1인...ㅠㅠ
제대로 사용하려면 아래처럼 해야하는거 맞지요?
<?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>
http://memcached.org/
http://stackoverflow.com/questions/10770067/memcache-get-return-different-array
요기만 보셔도 사용하시는데는 문제 없습니다~!!!
역쉬 기존 소스 뜯어 고쳐야 되네요...ㅠㅠ
connect 즉각 연결하라는 거지만.
add에다 넣으면 일단 저장했다가
처음 저장이나 불러오기 발생시 연결하게 되어 있습니다.
흐음...
저도 처음에 add가 save 관련인줄 알았습니다.
http://kr2.php.net/manual/en/memcache.add.php
이거 안만해도 mysql같은 sql형 캐쉬하는건 부적합 해요..
특히 게시판 형태는여..
아주 생각에는 아주 적합한 형태 일겁니다.
30개씩 100페이지를 나누어 캐쉬를 한다고 칩시다.
데이터가 쌓이거나 수정하는건 별로 어렵지 않습니다.
문제가 무엇이냐면 삭제가 문제 입니다.
데이터 중간에 특히 1페이지에 1번 게시물 삭제한다고 하면
중간에 빵꾸가 난걸 때우기 위해 위에 게시물이 하나씩 밀려야 하는 일이 생깁니다.
1페이지 1번 게시물 지웠다고 캐쉬를 전부 지워야하는 사태가 벌어 집니다.
엄청난 오버헤드 입니다.
이래서 캐쉬 적용하기 힘듭니다.
memcached가 mysql 엔진에 탑제된다는것은 둘간의 통신방법을 mysql 명령어로도 지원된다는 얘기 아닐까요?
트리거만 하더라도 플러그인형태로 udf를 만들면 현재 5.5버전에서도 가능하잖아요.
테이블 데이타가 변경될때, UDF에 트리거를 사용하여 memcached 데이타를 변경할수 있음.
가능은한데, 좀 불편하고, 플러그인설치도 어렵고, 정밀하게 제어해야 함. 암튼 빨리좀 보자 mysql5.6
mysql 5.6에서는 사용자정의함수의 호출없이도, memcached호출만 하면 알아서 변경된 데이타가 나옴. 자세한건 봐야겠지만, 이런 컨셉임.
http://www.clusterdb.com/tag/ndb-api/
트랜젝션과도 조금 연관이 있어 보입니다.