분류 전체보기
-
List개발하면서/코드보면서 2011. 11. 17. 01:28
Redis에서 사용하는 기본 List구조는 우리가 아는 Doubly Linked List입니다. (adlist.c) 그런데 List의 구조체가 아래와 같이 생겨먹었습니다. value 3을 저장하게되면 기본으로 value의 크기 + sizeof(list) 만큼의 메모리가 사용되게 됩니다. 이를 아깝게 생각한 두 Redis 커미터는 메모리를 아끼는방법이 없을까.....생각합니다. 그게 ziplist와 zipmap입니다. 여기서는 ziplist에 대해서만 알아보겠습니다. ziplist에 대한 발표자료 4~11 쪽입니다. ziplist의 구조는 다음과 같습니다. zlbyte는 ziplist의 전체 크기로 byte단위이며, 자료형은 unsigned integer입니다. zltail은 tail Entry가 시작 o..
-
Object개발하면서/코드보면서 2011. 11. 15. 23:33
redis object에 대해 알아본다 볼 소스는 redis.h와 object.c 두개의 파일. 실제 데이타는 void *ptr에 저장되고, list,hash,set 등에 대한 자료구조 정보를 type, encoding 에 저장한다. redis.io 에 object command에 있는걸 캡쳐한 사진이다. 빨간줄은 type, 파랑줄은 encoding 을 뜻한다(ziplist, hashtable은 두개 type에 걸쳐있네요) 언뜻생각하면, encoding으로만 자료형을 구분해도 될것 같은데 굳이...왜 type이라는 자료형을 두었을까???? 나름의 제 생각은 encoding으로 검사하는것보다 비슷한 encoding(자료형)끼리 묶어서 동일한 type으로 놓고,검사를 하려고 한게 아닐까 생각된다...(그게 ..
-
Hashes개발하면서/코드보면서 2011. 11. 13. 21:09
"foo""bar""hello""world" 위의 모습은 foo : bar, hello : world 를 입력했을때 zipmap에 저장된 구조입니다. zmlen은 zipmap 의 실제 크기입니다. 1 byte를 사용하고, 크기가 254보다 크거나 같으면, 사용하지 않습니다. len은 1 byte 또는 5 byte를 사용합니다. 데이타의 길이가 0~252라면 1 byte가 사용되고, 253이면 다음 4 byte가 data의 길이가 됩니다. 255는 데이타의 끝을 나타냅니다. free는 수정후, 사용안한 byte의 크기를 나타냅니다. unsigned int형으로 8 bit입니다. 만약 8 bit가 넘는다면 zipmap 을 resize하게 됩니다. zmlen len key len free value len k..
-
zookeeper Cluster Server 구성하기개발하면서/etc 2011. 10. 24. 23:43
여러 대의 서버를 관리하는 게 참 복잡합니다. 초기 작은 규모로 운영되면 몰라도 데이터가 커지고, 사용자수도 증가하면서 관리해야 될 서버가 많아져서 신경 쓸게 더 많아졌습니다. 그래서 나온게 ZooKeeper~!!!. 이번에 20대정도의 서버로 개발을 하게 되었는데, 제가 ZooKeeper 쪽을 담당하게 되었습니다. ZooKeeper 서버가 죽을수 있으므로 여러 대를 두어야 합니다. 찾아봤더니, 역시..... 이미 되어있네요. 아래 링크 보면서 하면 진행하면 됩니다. 설명이 잘~~~ 되어있죠 http://sanjivblogs.blogspot.com/2011/04/deploying-zookeeper-ensemble.html 몇 개 헤맨 부분이 있는데요. 1. myid 설정하는 부분 좀 창피한 건데 제가 영..
-
python string 다루기개발하면서/코드보면서 2011. 10. 13. 08:07
PS를 하다보면 string을 자유롭게 다뤄야하는데 내가 직접 짜고 다른 사람이 짠 해답을 보면 built-in method로 깔끔하게 구현한게 있을때 현타가 온다. python string의 built-in method와 slices를 알아보고 대강 어떤게 있는지 살펴보기로 한다. built-in Method str.isXXX 알파벳, 숫자, 알파벳+숫자, 아스키 코드, 대/소문자 여부를 판단할때 사용한다. str.center(width, [fillchar]), str.ljust(width, [fillchar]), str.rjust(width, [fillchar]) 문자열 가운데 정렬/왼족 정렬/오른쪽 정렬 str.count(sub[, start[, end]]) 문자열 안에 sub이 발생하는 횟수 st..
-
[Fastcat] Search에 대해 알아보자 (1)개발하면서/코드보면서 2011. 9. 10. 14:45
지금까지 fastcat의 인덱싱, 사전에 대해 알아보았습니다. 남은건 Search.....훑어봤는데.....어후;;; 길어질것 같아요 ㅋㅋ 제가 학습한 것들을 최대한 알기 쉽게 설명하는게 이 블로그의 목적입니다. 제가 이해된 부분, 추측하는것들이 있으니 틀린점, 애매한점 이런거 알려주시면 감사하겠습니다. 환영합니다~! : ) 피드백 하나가 포스트에 힘을 실어줍니다 ㅋㅋㅋ Search에 대해 알아보도록 하겠습니다. (편의상 존댓말은 생략합니다.) -------------------------------------------------------------------------------------------- 우선 Search 부분의 class Diagram은 다음과 같다. loadSearcherAndRe..