본문 바로가기
개발공부/PHP

[PHP] redis 라이브러리 - Predis 알아보기

by bzerome240 2022. 12. 30.

PHP에서 Redis 장비로의 접근을 위한 Redis Client 라이브러리이다.

php >= 5.3 이 요구된다.

 

Github 링크

Readme를 잘 보고 필요한것을 공부해야 한다.

 

GitHub - predis/predis: A flexible and feature-complete Redis client for PHP.

A flexible and feature-complete Redis client for PHP. - GitHub - predis/predis: A flexible and feature-complete Redis client for PHP.

github.com

 

특징

  • redis-cluster 지원 (Redis >= 3.0)
  • redis-sentinel 지원
  • client-side sharding 또는 distribute the keyspaces 을 통한 clustring 지원

 

단점

phpredis 라이브러리보다 속도가 10~100% 까지 loss가 있다. (phpredis 는 C언어로 만들어졌기 때문에)

부가적으로, Redis RESP 프로토콜의 직렬화 및 구문 분석 오버헤드를 낮추기 위해 phpiredis와 함께 사용하는 방법도 있다.

 

client configuration (Option)

  • prefix : 모든 명령어 키의 접두사 지정
    • 필수는 아님
  • exceptions  : client가 Redis 오류 발생 시 응답을 던지거나 반환해야하는지 여부
  • connections : 연결 인스턴스 목록
  • cluster : 클러스터를 처리하는데 사용하는 옵션
    • predis, redis
    • default: PredisCluster
  • replication : 여러 Redis 서버에서 replication 을 처리하는데 사용하는 옵션
    • TRUE, sentinel
    • default: MasterSlaveReplication
  • aggregate : 사용자 지정 client 구성
  • parameters : 기본 매개변수 목록
  • commands : 명령 팩터리 인스턴스

 

 

Redis 연결하기

client-side 샤딩 접근 방식을 사용하여 clustering 모드에서 작동하도록 자체 구성하여 독립적인 노드의 클러스터를 생성하고 keyspace를 배포한다.

$parameters = ['tcp://10.0.0.1', 'tcp://10.0.0.2', 'tcp://10.0.0.3'];
$options    = ['cluster' => 'redis'];

$client = new Predis\Client($parameters, $options);

 

Redis 3.0과 함께 redis-cluster라는 clustering이 도입되었다.

$parameters = ['tcp://10.0.0.1?role=master', 'tcp://10.0.0.2', 'tcp://10.0.0.3'];
$options    = ['replication' => 'predis'];

$client = new Predis\Client($parameters, $options);

 

redis-sentinel  연결

$sentinels = ['tcp://10.0.0.1', 'tcp://10.0.0.2', 'tcp://10.0.0.3'];
$options   = ['replication' => 'sentinel', 'service' => 'mymaster'];


// 클라이언트의 인증이 필요한 경우 암호 입력
$options = [
    'replication' => 'sentinel',
    'service' => 'mymaster',
    'parameters' => [
        'password' => $secretpassword,
        'database' => 10,
    ],
];

$client = new Predis\Client($sentinels, $options);

 

 

예제 Directory

https://github.com/predis/predis/tree/v1.1/examples

 

GitHub - predis/predis: A flexible and feature-complete Redis client for PHP.

A flexible and feature-complete Redis client for PHP. - GitHub - predis/predis: A flexible and feature-complete Redis client for PHP.

github.com

 

 

 

 

 

 

 

 

 

 

 

 

728x90
반응형

'개발공부 > PHP' 카테고리의 다른 글

PHP call by reference  (0) 2024.03.02
PHP 단점 - connection pool  (0) 2023.06.07
[공유] Clean Code PHP 한글판  (0) 2023.05.16
PHP 싱글톤 패턴  (0) 2023.03.19
[PHP] mysql_num_rows VS mysql_affected_rows  (0) 2020.04.27

댓글