• MySQL매뉴얼
    • MySQL 5.6 매뉴얼
    • MySQL 5.1 매뉴얼
    • MySQL 5.0 매뉴얼
    • MySQL HA 매뉴얼
  • 기술문서
    • Xtrabackup 구성
    • 메모리 사용량 모니터링
  • 라이선스
  • 온라인문의
  • 회사소개
  • → 목 록 (MySQL5.6 한글메뉴얼) [close]
  • 1. MySQL 5.6 새로운 기능
  • 2. MySQL 설치 및 업그레이드
  • 3. MySQL Tutorial
  • 4. MySQL 프로그램
  • 5. MySQL 서버관리
  • 6. 보안
  • 7. 백업 및 복구
  • 8. 최적화
  • 9. Language Structure(언어구조)
  • 10. Character Sets(Globalization)
  • 11. 데이터형(Data Types)
  • 12. 함수와 연산자
  • 13. SQL 문법
  • 14. InnoDB 스토리지 엔진
  • 15. 기타 스토리지 엔진
  • 16. 고가용성 및 확장성
  • 1. Oracle VM Template for MySQL Enterprise
    2. DRBD/Pacemaker/Corosync/Oracle Linux 사용
    3. Windows 장애 조치 클러스터링 사용
    4. Amazon EC2 인스턴스의 MySQL의 사용
    5. ZFS 복제 사용
    6. MySQL과 memcached의 병용
    1. memcached 설치
    2. memcached 사용
    3. memcached 응용 프로그램 개발
    1. memcached의 기본 조작
    2. MySQL 캐시 레이어로 memcached 사용
    3. C 및 C ++에서 libmemcached 사용
    4. Perl에서 MySQL과 memcached 사용
    5. Python에서 MySQL과 memcached 사용
    6. PHP와 MySQL과 memcached 사용
    7. Ruby에서 MySQL과 memcached 사용
    8. Java에서 MySQL과 memcached 사용
    9. memcached의 TCP 텍스트 프로토콜 사용
    4. memcached 통계의 취득
    5. memcached의 FAQ
  • 17. 리플리케이션
  • 18. MySQL Cluster
  • 19. 파티셔닝
  • 20. Stored Programs and Views
  • 21. INFORMATION_SCHEMA
  • 22. PERFORMANCE SCHEMA
  • 23. 컨넥터 및 API
  • 24. MySQL 확장
  • 25. MySQL Enterprise Edition
  • 26. MySQL Workbench
  • 27. 제약 및 제한
  • 28. MySQL 5.7 새로운 기능

16.6.3.4 Perl에서 MySQL과 memcached 사용

Cache::Memcached 모듈은 Memcache 프로토콜에 대한 기본 인터페이스를 제공하고 memcached에 준비되어있는 핵심 기능을 지원합니다. 이 모듈은 운영 시스템의 패키지 관리 시스템 또는 CPAN 을 사용하여 설치합니다.

root-shell> perl -MCPAN -e 'install Cache::Memcached'

Perl에서 Cache::Memcached 모듈을 통해 memcached를 사용하려면 먼저 연결을위한 서버 목록 및 기타 매개 변수를 정의하는 새로운 Cache::Memcached 객체를 만듭니다. 유일한 인수는 캐시 인터페이스에 대한 옵션을 포함 해시입니다. 예를 들어, 3 개의 memcached 서버를 사용하는 새로운 인스턴스를 만들려면 :

use Cache::Memcached;

my $cache = new Cache::Memcached {
    'servers' => [
        '192.168.0.100:11211',
        '192.168.0.101:11211',
        '192.168.0.102:11211',
	],
};
참고

여러 서버와 함께 Cache::Memcached 인터페이스를 사용하면이 API는 그룹의 모든 서버에 대해 특정 작업을 자동으로 수행합니다. 예를 들어, Cache::Memcached 를 통해 통계를 검색하면 호스트 단위의 데이터를 포함하는 해시 함께 그룹의 모든 서버에 대해 일반화 된 통계를 반환합니다.

캐시 객체 인스턴스를 만들 때 인스턴스에 추가 등록 정보를 설정하려면 옵션의 해시의 일부로 옵션을 지정합니다. 또는 인스턴스에 대응하는 방법을 사용할 수도 있습니다.

  • servers 또는 set_servers() 메소드 : 사용되는 서버의 목록을 지정합니다. 이 서버 목록은 각 요소가 주소와 포트 번호 (콜론으로 구분 된) 조합 인 서버 배열에 대한 참조입니다. Unix 소켓에 의한 로컬 연결을 지정할 수 있습니다 (예를 들어, /tmp/sock/memcached ). (해시시에 어느 정도의 빈도로 서버를 사용해야 하는지를 나타낸다) 가중 서버를 지정하려면 memcached 서버 인스턴스와 가중치를 포함한 배열 참조를 지정합니다. 숫자가 높을수록 우선 순위가 높습니다.

  • compress_threshold 또는 set_compress_threshold() 메소드 : 값을 압축 할 때의 임계 값을 지정합니다. 지정된 숫자보다 큰 값은 저장시 및 취득시 ( zlib 를 사용하여) 자동으로 압축됩니다.

  • no_rehash 또는 set_norehash() 메소드 : 먼저 선택한 서버를 사용할 수없는 경우 새 서버 검색을 해제합니다.

  • readonly 또는 set_readonly() 메소드 : memcached 서버에 쓰기를 해제합니다.

Cache::Memcached 객체 인스턴스를 구성한 후에는 set() 및 get() 메소드를 사용하면 memcached 서버의 정보를 저장하고 검색 할 수 있습니다. 캐시에 저장되는 개체는 Storable 모듈을 사용하여 자동으로 직렬화 및 직렬화 해제됩니다.

Cache::Memcached 인터페이스는 데이터를 저장 / 검색하기 위해 다음 메소드를 지원합니다. 이 표에서 보는 바와 같이 일반 메서드와 관련이 있습니다.

Cache::Memcached 함수 동등한 범용 메소드
get() 일반 get() .
get_multi(keys) 하나의 쿼리만을 사용하여 memcache에서 여러 keys 를 가져옵니다. 키 / 값 쌍의 해시 참조를 반환합니다.
set() 일반 set() .
add() 일반 add() .
replace() 일반 replace() .
delete() 일반 delete() .
incr() 일반 incr() .
decr() 일반 decr() .

Perl 및 Cache::Memcached 모듈에서 memcached를 사용하는 완전한 예를 보여줍니다.

#!/usr/bin/perl

use Cache::Memcached;
use DBI;
use Data::Dumper;

# Configure the memcached server

my $cache = new Cache::Memcached {
    'servers' => [
                   'localhost:11211',
                   ],
    };

# Get the film name from the command line
# memcached keys must not contain spaces, so create
# a key name by replacing spaces with underscores

my $filmname = shift or die "Must specify the film name\n";
my $filmkey = $filmname;
$filmkey =~ s/ /_/;

# Load the data from the cache

my $filmdata = $cache->get($filmkey);

# If the data wasn't in the cache, then we load it from the database

if (!defined($filmdata))
{
    $filmdata = load_filmdata($filmname);

    if (defined($filmdata))
    {

# Set the data into the cache, using the key

	if ($cache->set($filmkey,$filmdata))
        {
            print STDERR "Film data loaded from database and cached\n";
        }
        else
        {
            print STDERR "Couldn't store to cache\n";
	}
    }
    else
    {
     	die "Couldn't find $filmname\n";
    }
}
else
{
    print STDERR "Film data loaded from Memcached\n";
}

sub load_filmdata
{
    my ($filmname) = @_;

    my $dsn = "DBI:mysql:database=sakila;host=localhost;port=3306";

    $dbh = DBI->connect($dsn, 'sakila','password');

    my ($filmbase) = $dbh->selectrow_hashref(sprintf('select * from film where title = %s',
                                                     $dbh->quote($filmname)));

    if (!defined($filmname))
    {
     	return (undef);
    }

    $filmbase->{stars} =
	$dbh->selectall_arrayref(sprintf('select concat(first_name," ",last_name) ' .
                                         'from film_actor left join (actor) ' .
                                         'on (film_actor.actor_id = actor.actor_id) ' .
                                         ' where film_id=%s',
                                         $dbh->quote($filmbase->{film_id})));

    return($filmbase);
}

이 예에서는 Sakila 데이터베이스를 사용하여 데이터베이스에서 영화 데이터를 검색하고 영화와 배우의 복합 레코드를 memcached에 씁니다. 있는 영화를 요청할 때, 그것은 존재하지 않았던 경우,이 결과를 얻을 수 있습니다.

shell> memcached-sakila.pl "ROCK INSTINCT"
Film data loaded from database and cached

캐시에 이미 추가되어 영화에 액세스 할 때 :

shell> memcached-sakila.pl "ROCK INSTINCT"
Film data loaded from Memcached


서울시 강남구 영동대로 602 6층
TEL: 02-6061-0006  /  E: csr@mysqlkorea.com
주식회사 이노클러스터  등록번호 : 727-86-02261
Copyright © innocluster Co. ltd. all rights reserved