基于redis的邮件异步发送

基于redis的邮件异步发送

相关工具和内容

安装Redis服务

编写Yii2的插件类

重写SwiftMailer类的方法

提交compsoer

提交至github

提交至composer

测试使用composer下载

安装redis服务

mkdir redis
cd redis
wget http://download.redis.io/releases/redis-4.0.1.tar.gz
tar -zxvf redis-4.0.1.tar.gz
cd redis-4.0.1/
ll

查看发现Makefile

-rw-rw-r--  1 root root 127778 Jul 24 21:58 00-RELEASENOTES
-rw-rw-r--  1 root root     53 Jul 24 21:58 BUGS
-rw-rw-r--  1 root root   1815 Jul 24 21:58 CONTRIBUTING
-rw-rw-r--  1 root root   1487 Jul 24 21:58 COPYING
drwxrwxr-x  6 root root   4096 Jul 24 21:58 deps
-rw-rw-r--  1 root root     11 Jul 24 21:58 INSTALL
-rw-rw-r--  1 root root    151 Jul 24 21:58 Makefile
-rw-rw-r--  1 root root   4223 Jul 24 21:58 MANIFESTO
-rw-rw-r--  1 root root  20530 Jul 24 21:58 README.md
-rw-rw-r--  1 root root  57764 Jul 24 21:58 redis.conf
-rwxrwxr-x  1 root root    271 Jul 24 21:58 runtest
-rwxrwxr-x  1 root root    280 Jul 24 21:58 runtest-cluster
-rwxrwxr-x  1 root root    281 Jul 24 21:58 runtest-sentinel
-rw-rw-r--  1 root root   7606 Jul 24 21:58 sentinel.conf
drwxrwxr-x  3 root root   4096 Jul 24 21:58 src
drwxrwxr-x 10 root root   4096 Jul 24 21:58 tests
drwxrwxr-x  8 root root   4096 Jul 24 21:58 utils

安装reids

make PREFIX=/usr/local/redis install

  • 遇到错误make: cc: Command not found make: * [adlist.o] Error 127
  • yum install gcc 并且使用 rpm -qa |grep gcc 验证gcc安装成功
  • Redis 安装报错 error: jemalloc/jemalloc.h: No such file or directory解决方法

make MALLOC=libc

  • 查看安装reids cd /usr/local/redis/bin
-rwxr-xr-x 1 root root  353792 Aug 15 19:34 redis-benchmark
-rwxr-xr-x 1 root root 3612248 Aug 15 19:34 redis-check-aof
-rwxr-xr-x 1 root root 3612248 Aug 15 19:34 redis-check-rdb
-rwxr-xr-x 1 root root  508296 Aug 15 19:34 redis-cli
lrwxrwxrwx 1 root root      12 Aug 15 19:34 redis-sentinel -> redis-server
-rwxr-xr-x 1 root root 3612248 Aug 15 19:34 redis-server
  • 返回redis安装目录 cd /var/www/dede_lsj/web/redis4.0.1/redis-4.0.1 文件夹下有 redis.conf 配置文件
  • 把redis配置文件拷贝到 /usr/local/redis/etc下
    mkdir -p /usr/local/redis/etc
    cp redis.conf /usr/local/redis/etc

修改redis启动脚本 vim utils/redis_init_script

    EXEC=/usr/local/redis/bin/redis-server
    CLIEXEC=/usr/local/redis/bin/redis-cli
  • 修改安装目录为reids安装目录
    mkdir /etc/redis
    ln -s /usr/local/redis/etc/redis.conf /etc/redis/6379.conf
    cp redis_init_script /etc/init.d/redis
  • 启动reids /etc/init.d/redis start

修改reids配置文件 默认后台启动

vim /etc/redis/6379.conf 修改 daemonize yes

查看redis是否启动成功 netstat -tunpl |grep 6379

配置redis开机启动

vim /etc/init.d/redis
在开头增加 #chkconfig:2345 80 90

    chkconfig --add redis
    chkconfig redis on 
  • ubuntu 开机启动 sudo sysv-rc-conf

安装php的redis扩展

    cd phpredis
    phpize
    ./configure --with-php-config=/usr/bin/php-config
    #或者  ./configure --with-php-config=/usr/local/php/bin/php-config
  • make && make install
  • 查看扩展路径 /usr/lib64/php/modules/ 里面有redis.so
  • vim /etc/php.ini
  • 或者 vim /usr/local/php/etc/php.ini
  • 增加 extension_dir = "/usr/lib64/php/modules/"
  • 增加 extension=redis.so

安装Yii2的Redis插件

    redis' => [
                'class' => 'yii\redis\Connection',
                'hostname' => 'localhost',
                'port' => 6379,
                'database' => 0,
            ],
  • 测试以yii2 是否可以使用redis
  • var_dump(Yii::$app->redis->keys("*"));

必须安装 composer require egulias/email-validator "~2.1"

定时任务发送邮件

查看邮件异步发送

  • /usr/local/redis/bin/redis-cli
  • select 1
  • keys *
  • lrange mails 0 -1
  • 查看队列中待发送邮件
  • lrange mails 0 -1 查看redis库中所有的邮件记录
  • 首先 console/controllers/MailerController.php 编写send方法
  • 执行 ./yii mailer/send 发送邮件
  • crontab -e
*/2 * * * * /home/ssz/workspace/seasa/yii mailer/send >> /home/ssz/workspace/logs/mail.log
时间: 2024-09-25 12:39:47

基于redis的邮件异步发送的相关文章

一个基于redis和disque实现的轻量级异步任务执行器

简介 horae是一个基于redis和disque实现的轻量级.高性能的异步任务执行器,它的核心是disque提供的任务队列,而队列有先进先出的时序关系,顾得名:horae. horae : 时序女神,希腊神话中司掌季节时间和人间秩序的三女神,又译"荷莱". horae的关注点不是队列服务的实现本身(已经有不少队列服务的实现了),而是希望借助于redis与disque提供的纯内存的高性能的队列机制,实现一个异步任务执行器.它可以自由配置任务来自哪种队列服务,它不关注任务执行的最终状态(

[PhalApi实战篇(1)]Redis队列处理异步任务

[PhalApi实战篇(1)]Redis队列处理异步任务 前言 先在这里感谢phalapi框架创始人@dogstar,为我们提供了这样一个优秀的开源框架. 哈喽大家好呀!之前编写的PhalApi入门篇和进阶篇已经过去了好久了,在此之间也回答了很多小伙伴各种各样的问题,这里也希望吧里面一些问的比较多的和比较有趣的以及笔者在使用PhalApi一些新的体会,都提取出来为大家带来一些能够在实际开发中可以使用的技术或思想,那么我们就开始我们实战篇中的第一节 Redis队列处理异步任务 大家希望喵咪在Pha

基于Redis的分布式锁真的安全吗?(上)

网上有关Redis分布式锁的文章可谓多如牛毛了,不信的话你可以拿关键词"Redis 分布式锁"随便到哪个搜索引擎上去搜索一下就知道了.这些文章的思路大体相近,给出的实现算法也看似合乎逻辑,但当我们着手去实现它们的时候,却发现如果你越是仔细推敲,疑虑也就越来越多.   实际上,大概在一年以前,关于Redis分布式锁的安全性问题,在分布式系统专家Martin Kleppmann和Redis的作者antirez之间就发生过一场争论.由于对这个问题一直以来比较关注,所以我前些日子仔细阅读了与这

基于Service Broker的异步消息传递

这里演示同一个SQL Server中不同数据库之间的基于Service Broker的异步消息传递,其中Stored Procedure充当Service Program.HelloWorldDB为目标数据库,DotNetFun2则为消息发送发的数据库. 同时,假设Server Broker的基本对象类型已经创建,如MessageType(XMLMessage), Contract(XMLContract), Queue(SendingQueue and ReceivingQueue)等等,具体

基于Redis的限流系统的设计

基于Redis的限流系统的设计,主要会谈及限流系统中限流策略这个功能的设计:在实现方面,算法使用的是令牌桶算法来,访问Redis使用lua脚本. 1.概念 限流是对系统的出入流量进行控制,防止大流量出入,导致资源不足,系统不稳定. 限流系统是对资源访问的控制组件,控制主要的两个功能:限流策略和熔断策略,对于熔断策略,不同的系统有不同的熔断策略诉求,有的系统希望直接拒绝.有的系统希望排队等待.有的系统希望服务降级.有的系统会定制自己的熔断策略,很难一一列举,所以本文只针对限流策略这个功能做详细的设

Tomcat7基于Redis的Session共享

目前,为了使web能适应大规模的访问,需要实现应用的集群部署.集群最有效的方案就是负载均衡,而实现负载均衡用户没一个请求都有可能被分配到不固定的服务器上,这样我们首先要解决session的统一来保证无论用户的请求被转发到哪个服务器上都能保证用户的正常使用,即需要实现session的共享机制. 在集群系统下实现session统一的有如下几种方案: (1) 应用服务器间的session复制共享(如tomcat自带session共享) (2) 基于cache DB缓存的session共享 应用服务器间

基于Redis的分布式锁真的安全吗?(下)

自从我写完这个话题的上半部分之后,就感觉头脑中出现了许多细小的声音,久久挥之不去.它们就像是在为了一些鸡毛蒜皮的小事而相互争吵个不停.的确,有关分布式的话题就是这样,琐碎异常,而且每个人说的话听起来似乎都有道理.   今天,我们就继续探讨这个话题的后半部分.本文中,我们将从Antirez反驳Martin Kleppmann的观点开始讲起,然后会涉及到Hacker News上出现的一些讨论内容,接下来我们还会讨论到基于Zookeeper和Chubby的分布式锁是怎样的,并和Redlock进行一些对

iCoremail之基于云计算的邮件安全策略

基于云计算技术的 邮件系统iCoremail近日,网易联营公司盈世推出了iCoremail专业邮件系统托管服务.据了解,iCoremail是通过云计算技术实现的企业邮件系统SaaS托管运营服务,集合了自建邮件系统和租用企业邮箱的 优点,iCoremail的推出,将直接冲击传统的企业邮箱理念.iCoremail 除了具有传统企业邮箱的"托管"基因外,还具有自建邮件系统的优势,即通过云计算技术,使每个企业客户都能使用一套独立.完整的Coremail XT邮件系统,这使得iCoremail的

图片-使用asp.net邮件组件发送显示发送失败

问题描述 使用asp.net邮件组件发送显示发送失败 解决方案 so what? 除了一张图片,其他什么也没有 你是让其他人帮你检查一下那几个红字的语法对不对么? 解决方案二: 用户名.密码是否指定正确.再不行联系下网站管理员.