php如何选择读取哪台redis_用ThinkPHP6操作Redis集群

仅作为Shane个人笔记

  • 上一篇文章Shane记录了自己搭建Redis集群的过程
  • 这一篇Shane准备记录如何使用TP6框架操作搭建好的集群
  • 以下代码中出现的show方法
  • 均为Shane写的用来返回
  • 统一数据的接口方法

创建测试模块

  • Shane取名为cluster
  • 在其中创建controller和config文件夹

配置连接

  • 将TP6框架根目录config文件夹下的cache.php配置文件复制一份到cluster下的config
  • 在stores里仿照file仿写一个redis的配置
'redis_write' => [    'host'       => '127.0.0.1', //主机IP    'port'       => 6380,        //端口    'type'       => 'redis',     //缓存类型    'password'   => 'passadmin', //密码(此密码和Shane上一篇文章设置的密码一致)    'timeout'    => 0,           //超时    'select'     => 0            //选择库],
  • 从配置名redis_write可以看出是master服务器,用来写
  • 那么相应的slave服务器用来读
  • 所以还需要有一个配置
'redis_read' => [    'host'       => 'slave主机IP', //主机IP    'port'       => 6380,        //端口    'type'       => 'redis',     //缓存类型    'password'   => 'passadmin', //密码(此密码和Shane上一篇文章设置的密码一致)    'timeout'    => 0,           //超时    'select'     => 0            //选择库],
  • 最后再来看下整体配置
<?phpuse thinkfacadeEnv;// +----------------------------------------------------------------------// | 缓存设置// +----------------------------------------------------------------------return [    // 默认缓存驱动    'default' => Env::get('cache.driver', 'redis'),    // 缓存连接方式配置    'stores'  => [        'file' => [            // 驱动方式            'type'       => 'File',            // 缓存保存目录            'path'       => '',            // 缓存前缀            'prefix'     => '',            // 缓存有效期 0表示永久缓存            'expire'     => 0,            // 缓存标签前缀            'tag_prefix' => 'tag:',            // 序列化机制 例如 ['serialize', 'unserialize']            'serialize'  => [],        ],        // 更多的缓存连接        'redis' => [            'host'       => '127.0.0.1',            'port'       => 6379,            'type'       => 'redis',            'select'     => 1        ],        'redis_write' => [            'host'       => '127.0.0.1',            'port'       => 6380,            'type'       => 'redis',            'password'   => 'passadmin',            'timeout'    => 0,            'select'     => 0        ],        'redis_read' => [            'host'       => 'slave主机IP',            'port'       => 6380,            'type'       => 'redis',            'password'   => 'passadmin',            'timeout'    => 0,            'select'     => 0        ],    ],];

创建控制器

  • Shane创建一个控制器取名Cluster
  • 在其中编写两个方法writeData和readData
//store里填写上一步配置好的redis_writepublic function writeData(){    return $this->show(        config("status.success"),        config("message.success"),        Cache::store('redis_write')->set('sss','aaa')    );}//store里填写上一步配置好的redis_readpublic function readData(){    return $this->show(        config("status.success"),        config("message.success"),        Cache::store('redis_read')->get('sss')    );}

测试

  • 通过 /模块/控制器/方法 的访问路径先访问writeData
  • /cluster/Cluster/writeData
3f695d6ccb57428f845ccf7746c59e39

插入执行成功

  • 再访问readData
  • /cluster/Cluster/readData
bab4183603634a3a80d2372fdb959c8f

读取执行成功

结尾

  • Redis集群在应用层面测试成功之后
  • 可以开始后面业务逻辑的编写了
  • 并且严格遵守明确的架构分层
  • 将对应的代码放入对应的模型层、business层、控制器层

Shane在B站的TP6视频:BV1tJ411J7qZ

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是ThinkPHP6实现Redis连接池以及Redis队列的详细代码实现。 首先,在ThinkPHP6中使用Redis需要安装`topthink/think-redis`扩展,可以通过以下命令进行安装: ``` composer require topthink/think-redis ``` 接下来,我们需要在项目的配置文件中配置Redis连接信息,可以在`config/database.php`文件中添加以下代码: ```php 'redis' => [ 'type' => 'redis', 'hostname' => '127.0.0.1', 'password' => '', 'port' => 6379, 'select' => 0, 'timeout' => 0, 'prefix' => '', 'persistent' => true, 'pool' => [ 'min_connections' => 1, 'max_connections' => 10, 'wait_timeout' => 3, 'max_idle_time' => 60, ], ], ``` 配置项说明: - `type`:数据库类型,这里填写`redis`。 - `hostname`:Redis主机地址。 - `password`:Redis密码,如果没有设置密码可以不填写。 - `port`:Redis端口号,默认为6379。 - `select`:选择的数据库,默认为0。 - `timeout`:连接Redis的超时时间,默认为0表示不限制。 - `prefix`:设置的键名前缀,默认为空。 - `persistent`:是否使用持久化连接,默认为true。 - `pool`:配置连接池信息,包括最小连接数、最大连接数、等待超时时间和最大空闲时间。 接下来,我们可以通过以下代码获取Redis连接并进行操作: ```php use think\facade\Cache; // 获取Redis连接 $redis = Cache::store('redis')->handler(); // 设置键值对 $redis->set('name', 'Tom'); // 获取键值对 $name = $redis->get('name'); echo $name; ``` 以上代码中,我们使用了ThinkPHP6的缓存门面`think\facade\Cache`来获取Redis连接,通过`store`方法指定使用`redis`缓存驱动,再通过`handler`方法获取Redis连接。 接下来,我们来实现Redis队列功能,具体的代码如下: ```php use think\queue\Job; use think\facade\Cache; // 定义任务处理类 class TestJob { public function fire(Job $job, $data) { // 获取Redis连接 $redis = Cache::store('redis')->handler(); // 从队列中取出任务数据 $name = $data['name']; // 进行任务处理 // ... // 任务处理完成后删除任务 $job->delete(); } } // 将任务加入队列 $jobHandlerClassName = 'TestJob'; // 任务处理类名 $jobData = ['name' => 'Tom']; // 任务数据 $queueName = 'test_queue'; // 队列名称 $delay = 0; // 延迟时间,默认为0 \think\Queue::later($delay, $jobHandlerClassName, $jobData, $queueName); ``` 以上代码中,我们首先定义了一个任务处理类`TestJob`,它实现了`fire`方法来处理任务。在`fire`方法中,我们首先获取Redis连接,然后从队列中取出任务数据,进行任务处理,并最终删除任务。 接下来,我们将任务加入队列。在代码中,我们使用了`think\Queue`门面的`later`方法来将任务加入队列,指定了任务处理类名、任务数据、队列名称和延迟时间(默认为0表示不延迟)。 以上就是ThinkPHP6实现Redis连接池和Redis队列的详细代码实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值