Memcache 캐 시 시스템 지식 점 정리

8465 단어 Memcache
Memcached 개념:Memcached 는 무료 로 원본 을 열 고 고성능 의 분포 식 대상 을 가 진 캐 시 시스템 으로 자주 액세스 하 는 대상 이나 데 이 터 를 저장 할 수 있 습 니 다.저 장 된 데 이 터 는 커 다란 HASH 표 와 같 습 니 다.이 표 는 Key-value 쌍 으로 메모리 에 존재 합 니 다.홈 페이지 다운로드 주소:http://www.memcached.org/운영 환경:Liux,BSD,windows 모두 실행 가능 프로 토 콜 이론:http://code.sixapart.com/svn/memcached/trunk/server/doc/protocol.txt(영어)작업 절차:1.클 라 이언 트 의 요청 데이터 가 memcached 에 있 는 지 확인 합 니 다.있 으 면 요청 데 이 터 를 직접 되 돌려 주 고 데이터 베 이 스 를 조작 하지 않 습 니 다.경 로 는 ① ② ③ ⑦ 입 니 다.2.요청 한 데이터 가 memcached 에 없 으 면 데이터 베 이 스 를 찾 아 데이터베이스 에서 가 져 온 데 이 터 를 클 라 이언 트 에 게 되 돌려 주 고 데이터 캐 시 를 memcached 에 한 부(memcached 클 라 이언 트 가 책임 지지 않 으 며 프로그램 이 명확 하 게 실현 되 어야 함)하 며 경 로 는 ① ② ④ ⑤ ⑦ ⑥ 이다.3.매번 데이터 베 이 스 를 업데이트 하 는 동시에 memcached 의 데 이 터 를 업데이트 하여 일치 성 을 확보한다.4.memcached 메모리 공간 을 사용 한 후에 LRU(Least Recently Used,최근 최소 사용)정책 과 만 료 실효 정책 을 사용 합 니 다.실효 데 이 터 는 먼저 교체 한 다음 에 최근 에 사용 하지 않 은 데 이 터 를 교체 합 니 다.
Memcached 특징:프로 토 콜 이 간단 합 니 다.   텍스트 줄 기반 프로 토 콜 입 니 다.telnet 을 통 해 memcached 서버 에서 직접 액세스 할 수 있 습 니 다.libevent 이벤트 처리    Libevent 는 BSD 시스템 의 kqueue,Linux 시스템 의 epoll 등 이벤트 처리 기능 을 인터페이스 로 봉 하여 기 존의 select 에 비해 성능 을 향상 시 키 는 C 를 이용 한 프로그램 라 이브 러 리 입 니 다.내 장 된 메모리 관리 방식    모든 데 이 터 는 메모리 에 저장 되 며 하 드 디스크 보다 액세스 데이터 가 빨 라 메모리 가 가득 차 면 LRU 알고리즘 을 통 해 사용 하지 않 는 캐 시 를 자동 으로 삭제 하지만,데이터 의 용재 문 제 를 고려 하지 않 고 서 비 스 를 재 개 하면 모든 데 이 터 를 잃 게 됩 니 다.분포 식   각 memcached 서버 간 에 서로 통신 하지 않 고 각각 데 이 터 를 독립 적 으로 액세스 하 며 어떠한 정보 도 공유 하지 않 습 니 다.서버 는 분포 식 기능 을 가지 지 않 습 니 다.분포 식 배 치 는 memcache 클 라 이언 트 에 달 려 있 습 니 다.
Memcached 설치 및 시작:memcached 를 설치 하려 면 libevent
 
Shell>tar zxvf libevent-1.4.14b-stable.tar.gz
Shell>cd libevent-1.4.14b-stable
Shell>./configure
Shell>make && make install
를 설치 하고 memcached
 
Shell>tar zxvf memcached-1.2.5.tar.tar
Shell>cd memcached-1.2.5
Shell>./configure Cprefix=/usr/local/memcached
Shell>make && make install
를 설치 해 야 합 니 다.memcached Shell>/usr/local/memcached/bin/memcached Cp 11211 Cd Cu root CP/tmp/memcached.pid
 
-P TCP, 11211
-d (daemon)
-u root , root
-P pid , “p” “P”
-l, IP , IP , IP
-m , MB , 64M
-c , 1024
-f , 1.25
-M , , LRU
는 64 비트 시스템 에서 libevent-1.4.so.2 파일 을 찾 을 수 없습니다.해결 방법 은 32 비트 디 렉 터 리 의 동명 파일 을 64 비트 디 렉 터 리 에 연결 하 는 것 이다.즉,windows 처럼 단축 키 를 만 드 는 것 이다.Shell>/usr/local/libevent-1.4.so.2/usr/lib 64/libevent-1.4.so.2 시작 후 포트 가 감청 되 지 않 은 것 을 발견 하면 명령 을 수행 할 때 pid 인 자 를 가 진'p'가 대문자'P'이기 때문에 소문 자로 쓸 수 있 습 니 다.명령 행 은 명령 저장 소 를 직접 조작 합 니 다.여섯 개의 명령 항목 이 있 습 니 다.
 
Set: memcached
Add: KEY , memcached , , NOT_STORED
Replace: KEY , memcached , NOT_STORED
Cas: KEY ,
Append:
Prepend:
에서 가 져 옵 니 다.두 가지 명령 항목 이 있 습 니 다.
 
Get: , , KEY ,flag value , , END, KEY , END
Get_multi:
삭제,하나의 명령:
Delete 
인 스 턴 스 작업:memcache
shell>telnet 127.0.0.1 11211 
에 먼저 연결 하여 데이터
Set liuguohua 0 0 21 
369369.blog.51cto.com
를 입력 한 후 시스템 이 자동 으로 저장 되 고 정상 값 STORED 로 돌아 가 명령 형식 을\r 로 되 돌려 줍 니 다.저 장 된 값 의 길 이 는 반드시 일치 해 야 합 니 다.그렇지 않 으 면 저장 에 성공 할 수 없습니다.liuguohua 필드 는 21 바이트 이기 때문에 저 장 된 369369.blog.51cto.com 길 이 는 21(총 21 개의 숫자 나 자모)입 니 다.데이터
Get liuguohua 
를 가 져 온 후 첫 번 째 줄 은 VALUE liuguohua 0 21 두 번 째 줄 로 돌아 가 실제 값 369369.blog.51cto.comMemcached 의 메모리 알고리즘 을 되 돌려 줍 니 다.Memcached 는 slab allocation 체 제 를 이용 하여 메모 리 를 분배 하고 관리 합 니 다.미리 정 해진 크기 에 따라 분 배 된 메모 리 를 특정한 길이 의 메모리 블록 으로 나 누 었 습 니 다.같은 크기 의 메모리 블록 을 그룹 으로 나 누 어 데 이 터 를 저장 할 때 키 크기 에 따라 slab 크기 와 일치 하고 가 까 운 slab 를 찾 아 저장 하기 때문에 공간 낭비 현상 이 존재 합 니 다.전통 적 인 메모리 관리 방식 은 malloc 를 통 해 분 배 된 메모 리 를 사용 한 후 free 를 통 해 메모 리 를 회수 하 는 것 이다.이런 방식 은 메모리 조각 이 생기 기 쉽 고 운영 체제 가 메모리 에 대한 관리 효율 을 낮 추 는 것 이다.Memcached 의 캐 시 정책:Memcached 의 캐 시 정책 은 LRU(최근 최소 사용)에 만 료 실효 정책 을 추가 합 니 다.memcached 에 데이터 항목 을 저장 할 때 캐 시 에서 의 실효 시간 을 지정 할 수 있 습 니 다.기본 값 은 영구적 입 니 다.memcached 서버 가 분 배 된 내 부 를 다 썼 을 때 실 효 된 데 이 터 를 먼저 교체 한 다음 에 최근 에 사용 하지 않 은 데이터 입 니 다.LRU 에서 memcached 는 Lazy Expiration 정책 을 사용 합 니 다.저 장 된 key/vlue 가 만 료 되 었 는 지 모니터링 하지 않 고 key 값 을 가 져 올 때 기 록 된 시간 스탬프 를 보고 key/value 가 공간 이 만 료 되 었 는 지 확인 하면 서버 의 부하 가 줄 어 듭 니 다.Memcached 의 분포 식 알고리즘:memcached 군집 에 key/value 를 저장/꺼 낼 때 memcached 클 라 이언 트 프로그램 은 일정한 알고리즘 에 따라 어느 서버 에 저장 할 지 계산 한 다음 에 key/value 값 을 이 서버 에 저장 합 니 다.즉,액세스 데 이 터 는 두 단계 로 나 뉘 어 가 고,첫 번 째 단 계 는 서버 를 선택 하고,두 번 째 단 계 는 데 이 터 를 액세스 하 는 것 이다.분포 식 알고리즘(Consistent Hashing):서버 알고리즘 을 선택 하 는 것 은 두 가지 가 있 는데 하 나 는 나머지 에 따라 분 포 를 계산 하 는 것 이 고 다른 하 나 는 해시 알고리즘 에 따라 분 포 를 계산 하 는 것 이다.나머지 알고리즘:키 의 정수 해시 값 을 먼저 구하 고 서버 데스크 톱 수 를 나 누 어 나머지 에 따라 액세스 서버 를 확인 합 니 다.이런 방법 은 계산 이 간단 하고 효율 적 이지 만 memcached 서버 가 증가 하거나 감소 할 때 거의 모든 캐 시 는 효력 을 잃 습 니 다.해시 알고리즘:memcached 서버 의 해시 값 을 계산 하고 0 에서 2 의 32 제곱 원 에 분포 한 다음 에 같은 방법 으로 데 이 터 를 저장 하 는 키 의 해시 값 을 계산 하여 원 에 매 핑 합 니 다.마지막 으로 데이터 가 매 핑 된 위치 부터 시계 방향 으로 찾 습 니 다.데 이 터 를 찾 은 첫 번 째 서버 에 저장 합 니 다.2 의 32 제곱 을 초과 하면 서버 를 찾 을 수 없습니다.첫 번 째 memcached 서버 에 데 이 터 를 저장 합 니 다.memcached 서버 를 추가 하면 원 에 만 서버 의 시계 반대 방향 을 추가 하 는 첫 번 째 서버 의 키 가 영향 을 받 습 니 다.Memcache 의 관리 와 성능 모니터링:명령 행 을 통 해 직접 관리 하고 모니터링 할 수 있 으 며 nagios,cacti 등 웹 소프트웨어 를 통 해 모니터링 명령 행 을 할 수 있다.
 
Shell>telnet 127.0.0.1 1211 // IP ,

Stats: memcached
Stats reset:
Stats slabs, slabs ,
Stats items: slab item
Stats cachedump 1 0: slabs KEY
Set|get:
STAT evictions 0: item item
다른 상용 소프트웨어 사용:
 
Shell>./Memcached-tool 127.0.0.1:11211
Shell>./Memcached-tool 127.0.0.1:11211 display
웹 소프트웨어:
 
Memcache.php
Nagios
Cacti
Memcached 와 redis 비교:본 고 는'시스템 네트워크 운영'블 로그 에서 나 왔 다.반드시 이 출처 를 보존 해 주 십시오http://369369.blog.51cto.com/319630/833234

좋은 웹페이지 즐겨찾기