PHP에서 Redis 장비로의 접근을 위한 Redis Client 라이브러리이다.
php >= 5.3 이 요구된다.
Github 링크
Readme를 잘 보고 필요한것을 공부해야 한다.
특징
- 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
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 |
댓글