`
sillycat
  • 浏览: 2542997 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

PHP Redis Client and Replica

    博客分类:
  • PHP
 
阅读更多
PHP Redis Client and Replica

We can configure the replica connection client like this:
$timeout_parameters = "&timeout=10&read_write_timeout=10";

$parameters = array(
     'tcp://' . $redisHostMaster . "?alias=master&$timeout_parameters",
     'tcp://' . $redisHostSlave1 . "?alias=slave1&$timeout_parameters",
     'tcp://' . $redisHostSlave2 . "?alias=slave2&$timeout_parameters"
);

$this->clientMaster = new Client($parameters, array('replication' => true));

If we create a new Client every time we use it, it will be good. It can send all the writes to master, all the reads to replica. But if we use a single object of that connection, once it connect to master, it will be master forever. That is what I get from the testings.

So finally, my solution change to this, I will keep 2 singleton clients, one for all writes, one for all reads.
$timeout_parameters = "&timeout=10&read_write_timeout=10";

$parameters = array(
     'tcp://' . $redisHostMaster . "?alias=master&$timeout_parameters",
     'tcp://' . $redisHostSlave1 . "?alias=slave1&$timeout_parameters",
     'tcp://' . $redisHostSlave2 . "?alias=slave2&$timeout_parameters"
);

$this->clientMaster = new Client($parameters, array('replication' => true));
$this->clientSlaves = new Client($parameters, array());

And we upgrade the client to v.1.1.1 to support all these. composer.json is as follow:
{
"autoload" : {
        "psr-0": {
            "JobProducerPHP": "src/"
        }
    },
    "require": {
        "predis/predis": "1.1.1",
        "aws/aws-sdk-php": "3.0.6",
        "katzgrau/klogger": "dev-master",
        "pimple/pimple": "3.0",
        "solarium/solarium": "^3.6",
        "phpFastCache/phpFastCache": "^4.3"
    },
    "require-dev": {
        "php": ">=5.3.0",
        "phpunit/phpunit": "~4.5.1",
        "phpunit/dbunit": ">=1.2",
        "phpunit/php-invoker": "*"
    }
}

We need to execute command as follow:
> ./composer.phar update

References:
https://github.com/nrk/predis/tree/v1.1/examples
https://github.com/nrk/predis/blob/v0.7.1/examples/MasterSlaveReplication.php

https://github.com/nrk/predis/issues/21
https://github.com/nrk/predis/wiki/Connection-Parameters

cluster
https://www.zybuluo.com/phper/note/248555
分享到:
评论

相关推荐

    redis php client 支持 php 5.3.6

    标题提及的“redis php client”指的是PHP中用于连接和操作Redis的扩展库。在PHP 5.3.x时代,`php_redis.dll`是一个常用的客户端扩展,允许开发者在PHP脚本中无缝地使用Redis功能。描述中提到的“php_redis.dll 版本...

    mac redis client

    "mac redis client"就是指适用于Mac的Redis客户端软件,它允许用户方便地连接到本地或远程的Redis服务,进行数据查看、添加、修改和删除等操作。 Redis客户端的选择对于开发者来说至关重要,因为一个好的客户端可以...

    Redis client list命令

    client list命令详解

    基于acl库封装c\c++ 的redis-client客户端源码

    基于acl库封装的redis client vs2010工程; 运行时解压到: redis-acl\lib_acl_cpp\samples\redis路径下,把lib_acl_vc2010d.lib、lib_acl_cpp_vc2010d.lib放到 \redis-acl\lib_acl_cpp\samples\redis\redisclient...

    redis client 2.0 客户端 管理工具

    redis client 2.0 客户端 管理工具

    很好地redis管理软件 redis client

    很好地redis管理软件 redis client

    redis-client.zip

    在本例中,"redis-client.zip"是一个压缩包,其中包含了一个或多个Redis客户端工具。这些工具通常包括命令行接口(CLI)和其他图形用户界面(GUI)应用程序,使得开发者和系统管理员能够方便地与Redis实例进行通信。...

    redis client

    redis 客户端 client

    Redis client的jar包和

    NULL 博文链接:https://mhtank521.iteye.com/blog/2292401

    ·c# redis client

    在描述中提到的“c# redis client modifications added”,这可能是指对原始的C# Redis客户端进行了修改或扩展,以适应特定项目需求或者优化性能。这些修改可能包括增加新功能、改进错误处理、提升性能、添加新的API...

    Redis Client Jar

    Redis Client GUI 工具 Jar包形式。Github上发布的工具包。分享给不能的同志们。

    redis-client-windows

    "redis-client-windows" 是一个专为Windows操作系统设计的Redis客户端工具,它提供了便捷的方式在本地Windows环境中与Redis服务器进行交互,包括复制、查询和修改Redis中的数据。 在Windows上使用Redis通常涉及以下...

    C++ Redis 客户端简单使用

    cpp_redis::redis_client client; client.connect("127.0.0.1", 6379); ``` 这里`127.0.0.1`是Redis服务器的IP地址,6379是默认端口号。 3. **发送命令**:`cpp-redis`库提供了一系列的模板函数来执行Redis命令...

    Java Redis Client GUI Tool.zip

    Java Redis Client GUI Tool

    redis client 桌面客户端

    "Redis client 桌面客户端"是指专为 Redis 设计的图形用户界面工具,它允许用户通过直观的界面与 Redis 服务器进行交互,进行数据的查看、添加、修改和删除等操作,而无需编写命令行指令。 在Redis客户端桌面应用中...

    redis 客户端

    在学习 redis的时候,就利用空闲时间写出来redisClient 的工具类,该工具类重要用于对 redis 集群的操作,不仅可以对对象String对象进行操作,也可以对 Object 进行操作。希望对大家有所帮助。

    RedisClient 下载 最新版

    Support flat view and hierarchy view to list redis data Support multiple language, now support English and Chinese Support run redis command in console Support run publish/subscribe Watch redis data ...

    A C++ Redis client.zip

    标题 "A C++ Redis client.zip" 提供了一个关键信息,即这个压缩包包含了一个用C++编写的Redis客户端。Redis是一种高性能的键值存储系统,常用于数据缓存、消息队列以及数据库等多个场景。C++是通用的、面向对象的...

    redis,phpredis中文手册

    PHPRedis是Redis的一个PHP扩展模块,提供了丰富的API接口用于与Redis实例交互,该模块效率高,支持链表排序等功能,非常适合用于创建内存级别的模块业务关系。 phpredis的使用方法相对直观,用户可以通过phpredis...

    phpredis-3.1.3.tar.gz linux下的php的redis扩展

    《phpredis-3.1.3:Linux环境下PHP的Redis扩展详解》 在现代Web开发中,PHP作为服务器端脚本语言,与Redis这样的高性能键值存储系统相结合,能够实现高效的数据交互。本文将深入探讨PHP与Redis集成的重要组件——...

Global site tag (gtag.js) - Google Analytics