Thinkphp5中使用redis队列发送消息
文章目錄
- 前言
- 一、php中怎么安裝redis?
- 二、windows中安裝redis
- 三、Thinkphp5中安裝think-queue擴(kuò)展
- 四、在項(xiàng)目中實(shí)際使用。
- 總結(jié)
前言
REmote DIctionary Server(Redis) 是一個(gè)由 Salvatore Sanfilippo 寫的 key-value 存儲(chǔ)系統(tǒng)。Redis 是一個(gè)開源的使用 ANSI C 語言編寫、遵守 BSD 協(xié)議、支持網(wǎng)絡(luò)、可基于內(nèi)存亦可持久化的日志型、Key-Value 數(shù)據(jù)庫,并提供多種語言的 API。
它通常被稱為數(shù)據(jù)結(jié)構(gòu)服務(wù)器,因?yàn)橹?#xff08;value)可以是 字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和 有序集合(sorted sets)等類型。
一、php中怎么安裝redis?
1.首先在phpinfo.php中查看自己的版本信息:
2.下載redis。
https://windows.php.net/downloads/pecl/releases/igbinary/
3.解壓縮,把php_redis.dll和php_redis.pdb拷貝到 F:\phpstudy_pro\Extensions\php\php7.3.4nts\ext(每個(gè)人的目錄都不一樣)。
修改 php.ini ,打開php.ini:把extension=php_igbinary和extension=php_redis拷貝到php.ini當(dāng)中。
二、windows中安裝redis
1.重新安裝完全版的 redis。
https://github.com/MicrosoftArchive/redis/releases
2.點(diǎn)擊 redis-server.exe 運(yùn)行redis服務(wù)。
3.安裝Redis可視化管理工具。
Redis Desktop Manager 下載地址:https://github.com/uglide/RedisDesktopManager/releases
三、Thinkphp5中安裝think-queue擴(kuò)展
1.首先查看 ThinkPHP 框架版本,然后進(jìn)入Packagist 官網(wǎng)搜索 think-queue,并根據(jù) ThinkPHP 版本選擇對(duì)應(yīng) think-queue 版本。
2.thinkphp-queue 地址:https://packagist.org/packages/topthink/think-queue
3.可直接使用 Composer 為當(dāng)前項(xiàng)目安裝 think-queue 消息隊(duì)列插件
4.think-queue 安裝完成后,會(huì)在 application\extra\ 項(xiàng)目配置目錄下生成 queue.php 配置文件。
<?php use think\Env; return [//Redis驅(qū)動(dòng)'connector'=>'redis',"expire"=>60,//任務(wù)過期時(shí)間默認(rèn)為秒,禁用為null"default"=>"default",//默認(rèn)隊(duì)列名稱"host"=>ENV::get('redis.host','127.0.0.1'),//Redis主機(jī)IP地址"port"=>ENV::get('redis.port','6379'),//Redis端口"password"=>ENV::get('redis.password',''),//Redis密碼"select"=>0,//Redis數(shù)據(jù)庫索引"timeout"=>0,//Redis連接超時(shí)時(shí)間"persistent"=>false,//是否長連接 ];think-queue 內(nèi)置了Redis、Database、Topthink、Sync 四種驅(qū)動(dòng)。
四、在項(xiàng)目中實(shí)際使用。
1.控制器中。
Sendmessage.php
application/job/Jobsendmessage.php
//自動(dòng)執(zhí)行fire方法中的功能。public function fire(Job $job,$send_data){//TOTO這里寫發(fā)送消息的邏輯//如果任務(wù)執(zhí)行成功后 記得刪除任務(wù),不然這個(gè)任務(wù)會(huì)重復(fù)執(zhí)行,直到達(dá)到最大重試次數(shù)后失敗后,執(zhí)行failed方法$job->delete();//也可以重新發(fā)布這個(gè)任務(wù)//$job->release($delay); //$delay為延遲時(shí)間}public function failed($data){// ...任務(wù)達(dá)到最大重試次數(shù)后,失敗了}2.運(yùn)行redis服務(wù)。
這里使用的是pm2啟動(dòng)一個(gè)json文件的方式的方式來運(yùn)行。
或者在項(xiàng)目的根目錄下直接運(yùn)行 queue:work --daemon --queue send_message
總結(jié)
這里只是簡單的使用了redis隊(duì)列的方式發(fā)送消息提醒,其他的功能使用有待后續(xù)研究。
總結(jié)
以上是生活随笔為你收集整理的Thinkphp5中使用redis队列发送消息的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【有限元仿真】ABAQUS人工能量-AL
- 下一篇: git使用.md