场景

在业务量小的情况下,我们使用Redis单机连接池就可以满足业务需求。因此,redis单机连接池就可以满足我们的业务。因此我们会这样写:

示例

注册连接池

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));

});

当业务量上来后,我们需要切换成集群模式的时候怎么办。因此我们做的应该是:

注册集群连接池

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],

]

));

老业务代码

use EasySwoole\RedisPool\Redis;

use EasySwoole\Redis\Redis as RedisClient

Redis::invoke('redis', function (RedisClient $redis) {

var_dump($redis->set('a', 1));

});

对于之前的老业务代码,就会出现、、、、此事,我的invoker回调参数是一个EasySwoole\Redis\RedisCluster实例,而非EasySwoole\Redis\Redis,

因此就会导致业务代码报错。

解决方案

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单机客户端与集群客户端的方法几乎一致,因此可以不修改任何业务代码,就是实现单机到集群的迁移

easyswoole数据库连接池_easyswoole redis连接池:集群迁移教程相关推荐

  1. php redis 集群 长连接池,php如何实现redis连接池

    项目使用的是php,生产环境使用的是redis集群,连接的地址是配置的域名,每次创建连接必须要经过一次域名解析,频繁的创建链接效率低下且经常出现超时的情况,有没有在生产环境实现redis链接池的,分享 ...

  2. SpringBoot2 Redis连接池

    连接池配置 pom.xml 增加: <dependency><groupId>org.springframework.boot</groupId><artif ...

  3. redis专题:redis键值设计、性能优化以及redis连接池配置

    文章目录 1.redis键值设计 ①:key设计规范 ②:value设计规范 2. 命令使用优化 3. redis连接池配置参数设计 4. redis连接池预热 5. redis的key过期删除策略 ...

  4. 数据库连接池之自定义连接池(mysql)

    数据库连接池之自定义连接池(mysql) 上一篇博文是"基于mysql的JDBC的增删改查的封装":点击可查看 今天本仙在昨天JDBC封装增删改查的基础上实现自定义的数据库连接池: ...

  5. SpringBoot 配置 Redis 连接池

    前言 SpringBoot2.0默认采用 Lettuce 客户端来连接 Redis 服务 默认是不使用连接池的,只有配置 redis.lettuce.pool下的属性的时候才可以使用到redis连接池 ...

  6. python redis连接池获取后关闭_python通过连接池连接redis,操作redis队列

    在每次使用redis都进行连接的话会拉低redis的效率,都知道redis是基于内存的数据库,效率贼高,所以每次进行连接比真正使用消耗的资源和时间还多.所以为了节省资源,减少多次连接损耗,连接池的作用 ...

  7. Java的Redis连接池代码性能不错

    其实这个是引用自网友http://blog.csdn.net/tuposky/article/details/45340183,有2个版本,差别就是ReentrantLock和synchronized ...

  8. c3p0和jdbctemplate配置oracle集群rac,C3P0连接池、DRUID连接池和JdbcTemplate

    目录 一.C3P0连接池 1.C3P0连接池简介 2.常用的配置参数 3.C3P0连接池基本使用 (1)C3P0配置文件 (2)API介绍 4.使用步骤 二.DRUID连接池 1. DRUID简介 2 ...

  9. 数据库连接池和Tomcat连接池的配置问题

    在做系统优化的时候师哥给我们提了一个连接池的概念,问我们有没有配置,我对这个概念一无所知,于是进行了一些研究,连接池有很多,比如WCF.EF还有数据库.CAS也可以配连接池,这些连接池用通俗的语言来说 ...

最新文章

  1. 使用Jekyll搭建博客
  2. citrix xenapp应用保存文件时隐藏服务器上的磁盘
  3. 作用域安全的构造函数
  4. 网络编程应用:基于TCP协议【实现文件上传】--练习
  5. ASP.NET Core 3.0 gRPC 身份认证和授权
  6. Python模拟ICMP包
  7. 中文邮件营销html模版,怎么制作邮件营销模板?— —邮件格式
  8. python数字类型怎么学,python的数字类型学习之数据类型
  9. 去西藏旅游一次要花多少钱,还有8/9月份去那边适合嘛?
  10. 常用的字符串分割方法
  11. 生活养生--转载微博
  12. stm32Cubemx(8):RTC和RTC唤醒中断
  13. 海量图片上传及存储方案
  14. linux系统分辨率无法修改,Redhat9重新安装后无法修改分辨率
  15. word粘贴超出页面怎么办
  16. angular primeng table 非sortIcon排序
  17. c++怎么判断系统是64位还是32位
  18. 蓝精灵协会 (The Smurfs‘ Society) 宣布与著名艺术家展开一系列的合作,打造传奇 PFP 系列
  19. 【网络互联技术】(三) 网络互联基础。
  20. 基于深度学习的农作物病虫害识别

热门文章

  1. iptables踩坑记
  2. GA(遗传算法)的Matlab程序原理(from:六分之一工作室)
  3. 使apk具有system权限
  4. ARM Linux (S3C6410架构/2.6.35内核)的内存映射(三)
  5. 一个Java Web后台任务执行工具的设计与实现
  6. linux ”我的草稿“
  7. hive环境搭建提示: java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument
  8. sim中do文件/memory(readmemb命令符)/移位编写
  9. composer查看当前镜像取消_配置和查看composer镜像
  10. feignclient多个配置_@FeignClient同一个name使用多个配置类的解决方案