redis实现消息队列
redis是一个开源的key-value存储系统。与Memcached类似,Redis将大部分数据存储在内存中,支持的数据类型包括:字符串、哈希表、链表、集合、有序集合以及基于这些数据类型的相关操作。Redis使用C语言开发,在大多数像Linux、BSD和Solaris等POSIX系统上无需任何外部依赖就可以使用。Redis支持的客户端语言也非常丰富,常用的计算机语言如C、C#、C++、Object-C、PHP、Python、 Java、Perl、Lua、Erlang等均有可用的客户端来访问Redis服务器。当前Redis的应用已经非常广泛,国内像新浪、淘宝,国外像 Flickr、Github等均在使用Redis的缓存服务。 Redis的安装非常方便,只需从http://redis.io/download获取源码,然后make && make install即可。默认情况下,Redis的服务器启动程序和客户端程序会安装到/usr/local/bin目录下。在启动Redis服务器时,我们需要为其指定一个配置文件,缺省情况下配置文件在Redis的源码目录下,文件名为redis.conf
在项目中使用消息队列一般是有如下几个原因:
把瞬间服务器的请求处理换成异步处理,缓解服务器的压力
实现数据顺序排列获取
redis实现消息队列步骤如下:
1).redis函数rpush,lpop
2).建议定时任务入队列
3)创建定时任务出队列
文件:demo.php插入数据到redis队列
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
<?php
$redis = new Redis();
$redis ->connect( '127.0.0.1' ,6379);
$password = '123456' ;
$redis ->auth( $password );
$arr = array ( 'h' , 'e' , 'l' , 'l' , 'o' , 'w' , 'o' , 'r' , 'l' , 'd' );
foreach ( $arr as $k => $v ){
$redis ->rpush( "mylist" , $v );
}
|
执行后结果如下
?>
文件:index.php定时扫描出队列
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
<?php
$redis = new Redis();
$redis ->connect( '127.0.0.1' ,6379);
$password = '123456' ;
$redis ->auth( $password );
//list类型出队操作
$value = $redis ->lpop( 'mylist' );
if ( $value ){
echo "出队的值" . $value ;
} else {
echo "出队完成" ;
}
?>
|
建立定时任务
*/1 * * * * root php /wwwroot/workplace/redis/index.php
*/3 * * * * root php /wwwroot/workplace/redis/demo.php
tail -f /var/log/cron 查看定时任务执行情况
Nov 7 00:30:01 dongzi CROND[6888]: (root) CMD (php /wwwroot/workplace/redis/demo.php)
Nov 7 00:30:01 dongzi CROND[6890]: (root) CMD (php /wwwroot/workplace/redis/index.php )
定时任务执行队列写入结果如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
127.0.0.1:6379> lrange mylist 0 -1
1) "h"
2) "e"
3) "l"
4) "l"
5) "o"
6) "w"
7) "o"
8) "r"
9) "l"
10) "d"
|
定时任务执行出队列后:
127.0.0.1:6379> lrange mylist 0 -11) "e"2) "l"3) "l"4) "o"5) "w"6) "o"7) "r"8) "l"9) "d"
redis实现消息队列相关推荐
- Redis做消息队列,香吗?
来自:架构师修行之路 菜菜哥,我刚做完了一个订单系统,感觉很简单呀 说说看,大量的订单状态怎么处理的? 我设计的时候可是考虑了这一点,所以用了异步处理,采用了MQ 那用的什么MQ呢,透露一下呗 我用的 ...
- 【springboot】【redis】springboot+redis实现发布订阅功能,实现redis的消息队列的功能...
springboot+redis实现发布订阅功能,实现redis的消息队列的功能 参考:https://www.cnblogs.com/cx987514451/p/9529611.html 思考一个问 ...
- PHP + Redis 实现消息队列
Redis做消息队列的好处在于它的轻量级,高并发,延迟敏感,应用场景有 即时数据分析.秒杀计数器.缓存等 Redis做消息队列待解决的问题: 1.消息的可靠性: 没有相应的机制保证消息的消费,当消费者 ...
- 用redis实现消息队列(实时消费+ack机制)【转】
用redis实现消息队列(实时消费+ack机制) java queue 消息队列 redis 消息队列 首先做简单的引入. MQ主要是用来: 解耦应用. 异步化消息 流量削峰填谷 目前使用的较多的有A ...
- 使用Redis 实现消息队列
一 .为什么要用Redis实现轻量级MQ? MQ的主要作用: 应用解耦 异步化消息 流量削峰填谷 目前使用比较多的是ActiveMQ . RabbitMQ . ZeroMQ . Kafka . Met ...
- 【BCVP】实现基于 Redis 的消息队列
聆听自己的声音 如果自己学不动了,或者感觉没有动力的时候,看看书,听听音乐,跑跑步,休息两天,重新出发,偷懒虽好,可不要贪杯. 话说上回书我们说到了,Redis的使用修改<[BCVP更新]Sta ...
- 程序员过关斩将--redis做消息队列,香吗?
菜菜哥,我刚做完了一个订单系统,感觉很简单呀 说说看,大量的订单状态怎么处理的? 我设计的时候可是考虑了这一点,所以用了异步处理,采用了MQ 那用的什么MQ呢,透露一下呗 我用的redis做的MQ,很 ...
- c#进阶(4)—— Redis 用于消息队列的存储
1.参考的博文 a : http://www.cnblogs.com/lori/archive/2012/04/12/2443708.html -- 主要的实现思路 b: http://www.cn ...
- Redis异步消息队列
一.异步消息队列介绍 个人认为消息队列的主要特点是异步处理,主要目的是减少请求响应时间和解耦.所以主要的使用场景就是将比较耗时而且不需要即时(同步)返回结果的操作作为消息放入消息队列.同时由于使用了消 ...
最新文章
- 自定义listView添加滑动删除功能
- [每天一个知识点]1-程序员的三大美德(1)
- Construct Binary Tree from Preorder and Inorder Traversal
- CryEngine3 引擎非商业用途将免费
- MySQL:基本命令
- vue修改config后怎么生效_梦幻西游 金银锦盒修改后资金怎么攥 可以考虑跑商
- html控制弯曲图,html – CSS3 3D弯曲视角
- LINUX 内核调试基础+编程基础
- python库手册(官方)python文档
- 电脑如何让两个文件夹同步更新备份?
- Linux内核专题 - 介绍
- 【树莓派】设置树莓派开机自动运行python脚本
- 走好数据中台最后一公里,为什么说数据服务API是数据中台的标配?
- 卡方检验,U检验,t检验,F检验
- Intel Atom移动处理器惨败,还被用户和经销商起诉
- 【推荐】移动App测试中的最佳做法
- error: OpenCV(4.4.0) C:\Users\appveyor\AppData\Local\Temp\1\pip-req-build-h4wtvo23\opencv\
- 计算机云开头的词语,云开头的四字词语介绍
- 恢复Outlook 2010/2007已被删除邮件的方法
- 网络拓扑测绘之城域网拓扑
热门文章
- spring源码 — 一、IoC容器初始化
- magento本地安装成功后无法进入后台,密码和用户名均正确 .
- AMD为何要选择捆绑中国市场?
- 宇瞻U盘出现无法格式化 写保护的完美解决办法 厂家提供的
- Fotosifter中文版
- VMWare: eth0: error fetching interface information : device not found
- loaction.reload(false)和location.reload(true) js发起请求
- Codeforces 610C:Harmony Analysis(构造)
- jqGrid ColModel Options
- 关于web程序中使用KindEditor向数据库插入带有格式的数据时出现的问题