基于redis的邮件异步发送

简介: 基于redis的邮件异步发送 相关工具和内容 安装Redis服务 编写Yii2的插件类 重写SwiftMailer类的方法 提交compsoer 提交至github 提交至composer 测试使用composer下载 安装redis服务 redis官网reids.
+关注继续查看

基于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
相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
1月前
|
NoSQL Go Redis
Redis与异步队列
使用Redis可以很方便地实现异步队列。
22 0
|
2月前
|
消息中间件 canal 缓存
Redis与MySQL双写一致性如何保证:延迟双删?binlog异步删除?
Redis与MySQL双写一致性如何保证:延迟双删?binlog异步删除?
|
4月前
|
缓存 NoSQL Java
高并发-【抢红包案例】之四:使用Redis+Lua脚本实现抢红包并异步持久化到数据库
高并发-【抢红包案例】之四:使用Redis+Lua脚本实现抢红包并异步持久化到数据库
199 0
|
7月前
|
存储 负载均衡 NoSQL
把酒言欢话聊天,基于Vue3.0+Tornado6.1+Redis发布订阅(pubsub)模式打造异步非阻塞(aioredis)实时(websocket)通信聊天系统
“表达欲”是人类成长史上的强大“源动力”,恩格斯早就直截了当地指出,处在蒙昧时代即低级阶段的人类,“以果实、坚果、根作为食物;音节清晰的语言的产生是这一时期的主要成就”。而在网络时代人们的表达欲往往更容易被满足,因为有聊天软件的存在。通常意义上,聊天大抵都基于两种形式:群聊和单聊。群聊或者群组聊天我们可以理解为聊天室,可以有人数上限,而单聊则可以认为是上限为2个人的特殊聊天室。
把酒言欢话聊天,基于Vue3.0+Tornado6.1+Redis发布订阅(pubsub)模式打造异步非阻塞(aioredis)实时(websocket)通信聊天系统
|
8月前
|
NoSQL Redis
|
8月前
|
消息中间件 设计模式 NoSQL
异步结果通知实现——基于Redis实现,我这操作很可以
前段时间,我在内存中实现了一个简单异步通知框架。但由于没有持久化功能,应用重启就会导致数据丢失,且不支持分布式和集群。今天这篇笔记,引入了 Redis 来解决这些问题,以下是几点理由: 数据结构丰富,支持 List、Sorted Set 等 具有持久化功能,消息的可靠性能得到保证 高可用性,支持单机、主从、集群部署 项目中已使用,接入成本更低 基于 Redis 实现延时队列也有几种方法,展开详细讲讲。
|
9月前
|
NoSQL JavaScript PHP
php使用redis异步队列爬取网站图片的教程(1)
php使用redis异步队列爬取网站图片的教程
67 0
|
9月前
|
NoSQL Redis
|
10月前
|
缓存 运维 负载均衡
Redis连环炮:内存淘汰?事务?分布式锁?分步式限流?异步队列?延时队列?高可用?如何部署?哈希槽?数据库和缓存的数据一致性?
Redis连环炮:内存淘汰?事务?分布式锁?分步式限流?异步队列?延时队列?高可用?如何部署?哈希槽?数据库和缓存的数据一致性?
150 0
Redis连环炮:内存淘汰?事务?分布式锁?分步式限流?异步队列?延时队列?高可用?如何部署?哈希槽?数据库和缓存的数据一致性?
|
JSON NoSQL 关系型数据库
JAVA通过Gearman实现MySQL到Redis的数据同步(异步复制)
无论MySQL还是Redis,自身都带有数据同步的机制,像比较常用的 MySQL的Master/Slave模式 ,就是由Slave端分析Master的binlog来实现的,这样的数据复制其实还是一个异步过程,只不过当服务器都在同一内网时,异步的延迟几乎可以忽略。
196 0
JAVA通过Gearman实现MySQL到Redis的数据同步(异步复制)
相关产品
云迁移中心
推荐文章
更多