최근에 Memcached 관련 3rd party application에 대해 개인적으로 아아아아…주 잠깐 분석을 했던지라 관련 내용으로 포스팅합니다.
What is Memcached?
Memcached는 범용 분산 메모리 캐싱 시스템입니다. 일반적으로 DB의 부하를 줄이고 동적 웹 어플리케이션의 속도 향상을 위해 사용되죠. 오픈소스 소프트웨어이며 Data나 Object를 RAM에 캐싱하는 방식으로 많이 사용됩니다.
이해를 돕기위해 일단적으로 DB만 사용하는 것과 memcached를 사용한 것 모두 샘플 코드를 보겠습니다. (https://en.wikipedia.org/wiki/Memcached 내 code)
Only DB
function get_foo(int userid)
{
data = db_select("SELECT * FROM users WHERE userid = ?", userid); // 단순하게 DB에서 데이터를 조회해서
return data; // 반환합니다.
}
With Memcached
function get_foo(int userid)
{
data = memcached_fetch("userrow:" + userid); // userid 가 메모리 캐시에 있는지 확인 후
if (!data) {
data = db_select("SELECT * FROM users WHERE userid = ?", userid); // db로 부터 얻어온 값을 ..
memcached_add("userrow:" + userid, data); // memcached로 넣어줍니다.
}
return data; // 그 이후부터는 memcached를 이용하여 데이터를 사용하겠죠.
}
간단합니다.
Connecting to memcached server using telnet
일단 telnet이나 nc로도 쉽게 memcached 서버로 접근하여 값을 읽어오거나 수정, 추가할 수 있습니다. 먼저 telnet을 통해 서버로 연결합니다. (기본 포트는 11211 입니다)
#> telnet 127.0.0.1 11211
텔넷 세션이 열려있는 상태에서 명령어를 주게 되면 여러가지 동작을 할 수 있습니다. 먼저 정상 연결 확인을 위해 stats 명령을 이용해 status 를 보겠습니다.
Trying 127.0.0.1…
Connected to 127.0.0.1.
Escape character is ‘^]’.
stats
STAT pid 7822
STAT uptime 11213
STAT time 1487915288
STAT version 1.4.25 Ubuntu
STAT libevent 2.0.21-stable
STAT pointer_size 64
잘 되네욥.
Show Key list
먼저 현재 저장된 키 리스트를 보는 명령입니다. Basic 명령은 Add del 부터 시작하겠지만, 그냥 이걸 먼저 알아두면 편할거 같기에 맨 위로 올렸습니다.
stats 명령은 여러가지 상태값을 볼 수 있습니다. telnet 으로 접근했을 때 바로 사용했던거죠. 여기서 하나의 하위 옵션으로 stat을 볼 수 있는데, 이 중 items를 통해 현재 저장된 메모리캐시 값을 볼 수 있습니다.
stats items STAT items:1:number 1 STAT items:1:age 2365 STAT items:1:evicted 0 STAT items:1:evicted_nonzero 0 STAT items:1:evicted_time 0 STAT items:1:outofmemory 0 STAT items:1:tailrepairs 0 STAT items:1:reclaimed 3
stats 명령을 활용하면 쉽게 키 리스트를 알아낼 수 있습니다.
Add to key/value
memcache에 key와 값을 추가하는 명령입니다.
아래 순서대로 들어가며, key는 key의 이름, flags(int, char등) , exptime 유효시간,
bytes는 크게를 의미하고 각각 value 는 %0d%0a(\r\n) 이후에 값, 그리고 뒤에 다시 똑같이 개행문자를 붙여줘야 인식됩니다.
add
e.g
add hahwul_data 0 900 5
12345
이런식으로 데이터가 들어갔다면.. hahwul_data 라는 키를 생성하고, 5byte에 12345를 저장합니다.
Delete to key/value
delete
Quit
처음에 아무생각없이.. Ctrl+C, D를 연타했었네요. quit 로 명령쉘 탈출이 가능합니다.
quit
Other command
set add get delete replace prepend flush_all incr decr stats
- stats slabs
- stats items
- stats malloc
- stats detail
- stats size
- stats reset version quit
주요한건 요정도가 있고.. 자세한건 위키 문서 참고하심이 좋을 듯 싶네요. http://zetawiki.com/wiki/Memcached_%EB%AA%85%EB%A0%B9%EC%96%B4
Reference
https://en.wikipedia.org/wiki/Memcached https://blog.elijaa.org/2010/05/21/memcached-telnet-command-summary/ http://zetawiki.com/wiki/Memcached_%EB%AA%85%EB%A0%B9%EC%96%B4