[memcached] 2. 활용로직

> 웹 어플리케이션 서버는 일차로 메모리에 캐싱되어있는지 확인한다. 데이터가 있다면 디비서버에 접근하지 않고 그대로 사용하며 없다면 접근하여 데이터를 읽어와 캐시서버에 저장한 후 사용한다. 이렇게 되면 데이터의 수정이 없는 이상 디비에 부하를 주지 않아도 된다.

memcached_system


> 개발로직을 CRUD 로 구분하여 살펴보면 다음과 같다.

/**
Create
-- 별도처리가 필요없다.
*/
mysql.create(query);
/**
Read
-- 메모리캐시에 있는 데이터를 사용하되 없으면
   디비에서 읽어와 메모리캐시에 저장하고 사용한다.
*/
var data;
data = memcached.get(key);
if(data == null){
   data = mysql.select(query);
   memcached.set(data);
}
/**
Update
-- Read시 다시 생성되도록 삭제한다.
*/
mysql.update(query);
memcached.delete(key);
/**
Delete
-- 동시에 삭제한다.
*/
mysql.delete(query);
memcached.delete(key);
- memcached에는 테이블이 존재하지 않으며 key-value형태의 데이터셋만 존재한다. 그러므로 key string 구성시 prefix를 잘 구성하여야 한다.
- 데이터 모델링시 디비와 캐시를 동시에 관리할 수 있도록 많은 고려가 필요하다.

댓글 남기기