easyswoole数据库连接池_easyswoole redis连接池:集群迁移教程
场景
在业务量小的情况下,我们使用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连接池:集群迁移教程相关推荐
- php redis 集群 长连接池,php如何实现redis连接池
项目使用的是php,生产环境使用的是redis集群,连接的地址是配置的域名,每次创建连接必须要经过一次域名解析,频繁的创建链接效率低下且经常出现超时的情况,有没有在生产环境实现redis链接池的,分享 ...
- SpringBoot2 Redis连接池
连接池配置 pom.xml 增加: <dependency><groupId>org.springframework.boot</groupId><artif ...
- redis专题:redis键值设计、性能优化以及redis连接池配置
文章目录 1.redis键值设计 ①:key设计规范 ②:value设计规范 2. 命令使用优化 3. redis连接池配置参数设计 4. redis连接池预热 5. redis的key过期删除策略 ...
- 数据库连接池之自定义连接池(mysql)
数据库连接池之自定义连接池(mysql) 上一篇博文是"基于mysql的JDBC的增删改查的封装":点击可查看 今天本仙在昨天JDBC封装增删改查的基础上实现自定义的数据库连接池: ...
- SpringBoot 配置 Redis 连接池
前言 SpringBoot2.0默认采用 Lettuce 客户端来连接 Redis 服务 默认是不使用连接池的,只有配置 redis.lettuce.pool下的属性的时候才可以使用到redis连接池 ...
- python redis连接池获取后关闭_python通过连接池连接redis,操作redis队列
在每次使用redis都进行连接的话会拉低redis的效率,都知道redis是基于内存的数据库,效率贼高,所以每次进行连接比真正使用消耗的资源和时间还多.所以为了节省资源,减少多次连接损耗,连接池的作用 ...
- Java的Redis连接池代码性能不错
其实这个是引用自网友http://blog.csdn.net/tuposky/article/details/45340183,有2个版本,差别就是ReentrantLock和synchronized ...
- c3p0和jdbctemplate配置oracle集群rac,C3P0连接池、DRUID连接池和JdbcTemplate
目录 一.C3P0连接池 1.C3P0连接池简介 2.常用的配置参数 3.C3P0连接池基本使用 (1)C3P0配置文件 (2)API介绍 4.使用步骤 二.DRUID连接池 1. DRUID简介 2 ...
- 数据库连接池和Tomcat连接池的配置问题
在做系统优化的时候师哥给我们提了一个连接池的概念,问我们有没有配置,我对这个概念一无所知,于是进行了一些研究,连接池有很多,比如WCF.EF还有数据库.CAS也可以配连接池,这些连接池用通俗的语言来说 ...
最新文章
- 使用Jekyll搭建博客
- citrix xenapp应用保存文件时隐藏服务器上的磁盘
- 作用域安全的构造函数
- 网络编程应用:基于TCP协议【实现文件上传】--练习
- ASP.NET Core 3.0 gRPC 身份认证和授权
- Python模拟ICMP包
- 中文邮件营销html模版,怎么制作邮件营销模板?— —邮件格式
- python数字类型怎么学,python的数字类型学习之数据类型
- 去西藏旅游一次要花多少钱,还有8/9月份去那边适合嘛?
- 常用的字符串分割方法
- 生活养生--转载微博
- stm32Cubemx(8):RTC和RTC唤醒中断
- 海量图片上传及存储方案
- linux系统分辨率无法修改,Redhat9重新安装后无法修改分辨率
- word粘贴超出页面怎么办
- angular primeng table 非sortIcon排序
- c++怎么判断系统是64位还是32位
- 蓝精灵协会 (The Smurfs‘ Society) 宣布与著名艺术家展开一系列的合作,打造传奇 PFP 系列
- 【网络互联技术】(三) 网络互联基础。
- 基于深度学习的农作物病虫害识别
热门文章
- iptables踩坑记
- GA(遗传算法)的Matlab程序原理(from:六分之一工作室)
- 使apk具有system权限
- ARM Linux (S3C6410架构/2.6.35内核)的内存映射(三)
- 一个Java Web后台任务执行工具的设计与实现
- linux ”我的草稿“
- hive环境搭建提示: java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument
- sim中do文件/memory(readmemb命令符)/移位编写
- composer查看当前镜像取消_配置和查看composer镜像
- feignclient多个配置_@FeignClient同一个name使用多个配置类的解决方案