그누 memcached 캐싱 정보
그누 memcached 캐싱
본문
이번에 작업하다가
memcached 캐싱시스템을 만들엇는데 필요하실분이 계실까요..?
추천
0
0
댓글 36개

손....

헉!
말씀만 하시면 커스터 마이징해서 대령하겠습니다^^
웹톡 예전에 정말 잘썼었습니다^^
말씀만 하시면 커스터 마이징해서 대령하겠습니다^^
웹톡 예전에 정말 잘썼었습니다^^

지금은 안쓰세요?
왜 안쓰세요? 얼른 쓰셔요.
왜 안쓰세요? 얼른 쓰셔요.

ㅜㅜ 지금 운영하는곳은 채팅을 쓸일이..............
어느 부분을 캐싱하는 겁니까?
보드에 테이블도 캐싱이 가능 합니까?
데이터 동기화 어떻게 하십니까?
보드에 테이블도 캐싱이 가능 합니까?
데이터 동기화 어떻게 하십니까?

지금 실행중인건 전체 페이지 자체를 캐싱합니다.
캐싱시간은 1분으로 설정했으나 언제든지 변경가능합니다~
ps.조회수 포기 하셔야 합니다ㅠ
캐싱시간은 1분으로 설정했으나 언제든지 변경가능합니다~
ps.조회수 포기 하셔야 합니다ㅠ

뭐든지 올려주시면 감사합죠~~ 굽신들어갑니다.

헉...공유는 하지 않아요 몇몇 분들에게만 언제나 드립니다 ㅠ
전체???? 헐~

효율은 그다지 좋지가 않아요 ㅠㅠ
말그대로 트래픽 폭탄 전용 시스템입니다 ㅎㅎ
지금 막 만들어서 점점 다듬어야 겠지요 ㅠㅠ
말그대로 트래픽 폭탄 전용 시스템입니다 ㅎㅎ
지금 막 만들어서 점점 다듬어야 겠지요 ㅠㅠ

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

mysql 에 memcached 가 플러그인 형태로 5.6 버전에 나온답니다 ^^
예 그게 innoDB 엔진으로 만든 noSQL의 붙어 나오는 걸로 아는데요.
제가 알기로는 noSQL쪽만 되는 것 같던대요.
제가 알기로는 noSQL쪽만 되는 것 같던대요.

innodb에 붙어서 나오는건 알고 있지만 자세히 보진 않아서 잘모르겠습니다 ㅠㅠ

트리거를 이용해서 데이타가 변경되면, memcached 데이타를 변경할수 있습니다. 주로 조회수, 추천수가 변경되는걸 체크할때 쓰일것 같습니다.
캐싱이 필요한 페이지는 게시판별로 첫페이지(최근글 20개정도)에 해당되니까 이를 캐싱하면 됩니다.
솔직히 mysql 데이타를 제대로 캐싱할거면, mysql서버의 bin_log를 모니터링하고 있다가, 게시물 데이타가 변경되면, 바로바로 memcached를 변경하도록 만들어도 됩니다.
아니면, 1초에 한번씩 memcached에 캐싱 페이지를 만들어도 되구요.
캐싱이 필요한 페이지는 게시판별로 첫페이지(최근글 20개정도)에 해당되니까 이를 캐싱하면 됩니다.
솔직히 mysql 데이타를 제대로 캐싱할거면, mysql서버의 bin_log를 모니터링하고 있다가, 게시물 데이타가 변경되면, 바로바로 memcached를 변경하도록 만들어도 됩니다.
아니면, 1초에 한번씩 memcached에 캐싱 페이지를 만들어도 되구요.

5.6.2 를 써보았습니다!
플러그인 설치후에 날라다니는 그 모습이란...
db 자체 캐싱을 원하시는 거면!!!! 곧 대령하겠사옵니다^^
플러그인 설치후에 날라다니는 그 모습이란...
db 자체 캐싱을 원하시는 거면!!!! 곧 대령하겠사옵니다^^

제가 제대로 알고 있는건지 몰라도
memcached 설정 했다가 PHP 소스 뜯어 고쳐야 되어서 접은 1인...ㅠㅠ
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>
제대로 사용하려면 아래처럼 해야하는거 맞지요?
<?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에다 넣으면 일단 저장했다가
처음 저장이나 불러오기 발생시 연결하게 되어 있습니다.
connect 즉각 연결하라는 거지만.
add에다 넣으면 일단 저장했다가
처음 저장이나 불러오기 발생시 연결하게 되어 있습니다.

헉 전 add 나 set 이나 connect 를 해야만 쓸수 있는거 아니었나요?ㅠ
흐음...
흐음...

하앜 모든지 하나 만들어 놓으면 그다음 커스터 마이징이나 좀 쓸만하게 다듬는게 더 어려운거 같습니다 ㅠ
memcached 캐쉬 많이 이용하지만
이거 안만해도 mysql같은 sql형 캐쉬하는건 부적합 해요..
특히 게시판 형태는여..
이거 안만해도 mysql같은 sql형 캐쉬하는건 부적합 해요..
특히 게시판 형태는여..

헉 그렇게 생각하시는 이유가 따로 있으신가요???
가령 게시물을 페이지대로 캐쉬를 한다고 해봐요..
아주 생각에는 아주 적합한 형태 일겁니다.
30개씩 100페이지를 나누어 캐쉬를 한다고 칩시다.
데이터가 쌓이거나 수정하는건 별로 어렵지 않습니다.
문제가 무엇이냐면 삭제가 문제 입니다.
데이터 중간에 특히 1페이지에 1번 게시물 삭제한다고 하면
중간에 빵꾸가 난걸 때우기 위해 위에 게시물이 하나씩 밀려야 하는 일이 생깁니다.
1페이지 1번 게시물 지웠다고 캐쉬를 전부 지워야하는 사태가 벌어 집니다.
엄청난 오버헤드 입니다.
이래서 캐쉬 적용하기 힘듭니다.
아주 생각에는 아주 적합한 형태 일겁니다.
30개씩 100페이지를 나누어 캐쉬를 한다고 칩시다.
데이터가 쌓이거나 수정하는건 별로 어렵지 않습니다.
문제가 무엇이냐면 삭제가 문제 입니다.
데이터 중간에 특히 1페이지에 1번 게시물 삭제한다고 하면
중간에 빵꾸가 난걸 때우기 위해 위에 게시물이 하나씩 밀려야 하는 일이 생깁니다.
1페이지 1번 게시물 지웠다고 캐쉬를 전부 지워야하는 사태가 벌어 집니다.
엄청난 오버헤드 입니다.
이래서 캐쉬 적용하기 힘듭니다.

트리거에서 지원해주면 모든게 해결됩니다.
memcached가 mysql 엔진에 탑제된다는것은 둘간의 통신방법을 mysql 명령어로도 지원된다는 얘기 아닐까요?
트리거만 하더라도 플러그인형태로 udf를 만들면 현재 5.5버전에서도 가능하잖아요.
memcached가 mysql 엔진에 탑제된다는것은 둘간의 통신방법을 mysql 명령어로도 지원된다는 얘기 아닐까요?
트리거만 하더라도 플러그인형태로 udf를 만들면 현재 5.5버전에서도 가능하잖아요.
이런것도 있었네요.. 감사해요 알려줘서요..

정리하면, 현재 5.5 에서는 memcached를 mysql 플러그인으로 설치하여 UDF(사용자정의함수) 를 만들수 있음.
테이블 데이타가 변경될때, UDF에 트리거를 사용하여 memcached 데이타를 변경할수 있음.
가능은한데, 좀 불편하고, 플러그인설치도 어렵고, 정밀하게 제어해야 함. 암튼 빨리좀 보자 mysql5.6
mysql 5.6에서는 사용자정의함수의 호출없이도, memcached호출만 하면 알아서 변경된 데이타가 나옴. 자세한건 봐야겠지만, 이런 컨셉임.
테이블 데이타가 변경될때, UDF에 트리거를 사용하여 memcached 데이타를 변경할수 있음.
가능은한데, 좀 불편하고, 플러그인설치도 어렵고, 정밀하게 제어해야 함. 암튼 빨리좀 보자 mysql5.6
mysql 5.6에서는 사용자정의함수의 호출없이도, memcached호출만 하면 알아서 변경된 데이타가 나옴. 자세한건 봐야겠지만, 이런 컨셉임.
음.. 무슨 소리인지는 알겠습니다.. 그러면 메모리캐쉬를 수정하면 DB데이터도 변경이 가능한건가요?

^^