easyswoole - 基于swoole扩展实现的一款高性能php框架

場景

在業(yè)務量小的情況下,我們使用Redis單機連接池就可以滿足業(yè)務需求。因此,redis單機連接池就可以滿足我們的業(yè)務。因此我們會這樣寫:

示例

注冊連接池

use EasySwoole\Redis\Config\RedisConfig;
use EasySwoole\RedisPool\Redis;
Redis::getInstance()->register('redis',new RedisConfig());

使用

use EasySwoole\RedisPool\Redis;
use EasySwoole\Redis\Redis as RedisClient
Redis::invoke('redis', function (RedisClient $redis) {
    var_dump($redis->set('a', 1));
});

當業(yè)務量上來后,我們需要切換成集群模式的時候怎么辦。因此我們做的應該是:

注冊集群連接池

use EasySwoole\RedisPool\Redis;
use EasySwoole\Redis\Config\RedisClusterConfig;
Redis::getInstance()->register('redis',new RedisClusterConfig([
        ['172.16.253.156', 9001],
        ['172.16.253.156', 9002],
        ['172.16.253.156', 9003],
        ['172.16.253.156', 9004],
    ]
));

老業(yè)務代碼

use EasySwoole\RedisPool\Redis;
use EasySwoole\Redis\Redis as RedisClient
Redis::invoke('redis', function (RedisClient $redis) {
    var_dump($redis->set('a', 1));
});

對于之前的老業(yè)務代碼,就會出現、、、、此事,我的invoker回調參數是一個EasySwoole\Redis\RedisCluster實例,而非EasySwoole\Redis\Redis, 因此就會導致業(yè)務代碼報錯。

解決方案

Easyswoole Redis Pool組件,在2.1.1版本開始,基于easyswoole的magic pool 引入一個cask機制。可以指定實例化的class。

定義一個class

namespace App\Utility;

use EasySwoole\Redis\Redis;

class RedisClient extends Redis
{
    function fuck()
    {
        var_dump('waf');
    }
}

該class繼承自EasySwoole\Redis\Redis

注冊redis

use EasySwoole\Redis\Config\RedisConfig;
use EasySwoole\RedisPool\Redis;
use App\Utility\RedisClient
Redis::getInstance()->register('redis',$config,RedisClient::class);

使用redis

use EasySwoole\RedisPool\Redis;
use App\Utility\RedisClient
Redis::invoke('redis', function (RedisClient $redis) {
    var_dump($redis->set('a', 1));
});

遷移集群

修改注冊配置

use EasySwoole\RedisPool\Redis;
use EasySwoole\Redis\Config\RedisClusterConfig;
Redis::getInstance()->register('redis',new RedisClusterConfig([
        ['172.16.253.156', 9001],
        ['172.16.253.156', 9002],
        ['172.16.253.156', 9003],
        ['172.16.253.156', 9004],
    ]
),RedisClient::class);

繼承修改

修改App\Utility\RedisClient,讓它繼承EasySwoole\Redis\RedisCluster即可

而由于redis單機客戶端與集群客戶端的方法幾乎一致,因此可以不修改任何業(yè)務代碼,就是實現單機到集群的遷移

主站蜘蛛池模板: 菏泽圣邦仪器仪表开发有限公司| 卧式镗铣床,道斯镗铣机床加工中心-江苏道斯数控科技有限公司 | 王者荣耀/和平精英扫码上号登录器_微信安卓苹果扫码上号登录软件 - 上号宝扫码登录器 | 激光切割机_激光切割机价格-山东大威激光科技有限公司 | 铝型材定制_东莞铝型材_散热器铝型材_工业铝合金型材挤压加工生产厂家价格-中亚铝业 | 无铅锡膏,无铅锡膏厂家,有铅锡膏厂家,高温锡膏厂家,环保锡丝,贴片红胶-东莞市科舜电子科技有限公司 | 液体灌装机_全自动灌装机_大桶灌装机_200L灌装机_涂料油漆灌装机-昆山灌装自动化设备有限公司 | 煤炭烘干机|煤泥烘干机|矿泥烘干机|酒糟烘干机|果渣烘干机-东鼎干燥官方网站 | 卫生级自吸泵-不锈钢化工离心泵-上海胜欧泵阀有限公司 | 粮食加工设备_玉米_大米_面粉_燕麦_豆类杂粮加工设备-华豫万通 | 深圳市佳顺优印印刷有限公司,佳顺优印,画册印刷,海报印刷,封套印刷,手提袋印刷,包装盒印刷,彩盒印刷,无碳纸印刷,不干胶印刷,信封印刷,便笺印刷,笔记本印刷,台历印刷,挂历印刷,国际会展中心附近印刷厂,宝安印刷厂,宝安教材印刷厂 | 浩通集团 国际货运 物贸一体化 中非经贸 | 江苏保捷锻压有限公司(中国汽车零部件供应商,锻造,精加工,热处理) | 消防改造安装,消防维修检测,消防工程安装,气体灭火施工安装,火灾烟感探测器清洗 | 企业微信服务商-企业微信crm营销|认证-[朝阳企客通]一款企微管家服务型产品 | 压滤机_板框压滤机_生产厂家陕西华星佳洋装备制造有限公司 | 气动球阀 - 电动球阀 - 电站阀 - 汗越阀门 | 深圳市中控智能科技有限公司 | 上海栋彤物流有限公司-可信赖的物流服务提供商| 济南货架|济南仓储货架|济南仓库货架|山东蕴达金属制品有限公司 济南海纳特科技有限公司 | 信管飞软件官网 - 亚拓软件旗下精细化管理软件、进销存管理软件、混凝土ERP、通风设备ERP、风管报价软件、出纳软件、送货单打印软件、ERP软件等免费下载 | 南通市科脉电子科技有限公司| 联想南京总代理-联想服务器|联想电脑笔记本代理商|联想工作站|dell服务器|HP服务器|南京IBM代理商|IBM V5000存储总包销-南京宇宽科技有限公司 | 精密机械加工_零件加工_机械零部件加工厂_高精密零件加工定制—深圳精密机械加工厂 | 浙江中瓷阀门有限公司 | 五金冲压件生产厂家_加工五金拉伸件-沧州浚鼎机械制造有限公司-沧州浚鼎机械制造有限公司 | 雨量计,翻斗雨量计,声波雨量计i,时差法流量计,时差法明渠流量计 - 徐州伟思水务科技有限公司 | 廊坊纳科新材料技术有限公司--纳科新材料技术有限公司|廊坊纳科新材料|纳科新材料技术 | 江苏成人高考网-江苏省成人高考报名 | 云南万通汽车学校【官方网站】 | 篮球场围网|网球场围网|球场围网|体育场围网_安平县炎煌丝网制品有限公司 | 廊坊纳科新材料技术有限公司--纳科新材料技术有限公司|廊坊纳科新材料|纳科新材料技术 | 清洗剂-防锈油-润滑油-嘉信供应链一站式供应厂家| 金酱酒_金酱酒代理加盟招商_OEM贴牌企业定制! – 金酱酒代理加盟!茅台镇较早的酿酒烧坊,年产优质酱香白酒5000余吨,仁怀市十强白酒企业,主营主品:金酱酒、金酱陈香酒、酱香老酒等系列品牌产品 | 上海五相仪器仪表有限公司-鼓风干燥箱-拍击式无菌均质器生产厂家 | 胶球清洗-射水抽气器-磷酸盐加药装置-连云港振辉机械设备有限公司 | 企业信息安全整体解决方案提供商-上海华垸信息技术有限公司 | 检重秤,液化气充装秤,滚筒电子秤,汽车衡厂家|上海越衡实业 | 杀菌剂_除藻剂_杀菌灭藻剂_1227杀菌剂_中北精细化工 | 西安测试仪-西安电压测试仪-西安电流测试仪-西安热油汽水测试仪-西安阻抗测试仪-西安时间速度测试仪-西安电力设备厂家-西安中洲电力设备有限公司 | 化工招聘网 化工人才网|化工英才网-化工企业招聘首选网站 |