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

在项目中使用消息队列一般是有如下几个原因:

  1. 把瞬间服务器的请求处理换成异步处理,缓解服务器的压力

  2. 实现数据顺序排列获取

​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实现消息队列相关推荐

  1. Redis做消息队列,香吗?

    来自:架构师修行之路 菜菜哥,我刚做完了一个订单系统,感觉很简单呀 说说看,大量的订单状态怎么处理的? 我设计的时候可是考虑了这一点,所以用了异步处理,采用了MQ 那用的什么MQ呢,透露一下呗 我用的 ...

  2. 【springboot】【redis】springboot+redis实现发布订阅功能,实现redis的消息队列的功能...

    springboot+redis实现发布订阅功能,实现redis的消息队列的功能 参考:https://www.cnblogs.com/cx987514451/p/9529611.html 思考一个问 ...

  3. PHP + Redis 实现消息队列

    Redis做消息队列的好处在于它的轻量级,高并发,延迟敏感,应用场景有 即时数据分析.秒杀计数器.缓存等 Redis做消息队列待解决的问题: 1.消息的可靠性: 没有相应的机制保证消息的消费,当消费者 ...

  4. 用redis实现消息队列(实时消费+ack机制)【转】

    用redis实现消息队列(实时消费+ack机制) java queue 消息队列 redis 消息队列 首先做简单的引入. MQ主要是用来: 解耦应用. 异步化消息 流量削峰填谷 目前使用的较多的有A ...

  5. 使用Redis 实现消息队列

    一 .为什么要用Redis实现轻量级MQ? MQ的主要作用: 应用解耦 异步化消息 流量削峰填谷 目前使用比较多的是ActiveMQ . RabbitMQ . ZeroMQ . Kafka . Met ...

  6. 【BCVP】实现基于 Redis 的消息队列

    聆听自己的声音 如果自己学不动了,或者感觉没有动力的时候,看看书,听听音乐,跑跑步,休息两天,重新出发,偷懒虽好,可不要贪杯. 话说上回书我们说到了,Redis的使用修改<[BCVP更新]Sta ...

  7. 程序员过关斩将--redis做消息队列,香吗?

    菜菜哥,我刚做完了一个订单系统,感觉很简单呀 说说看,大量的订单状态怎么处理的? 我设计的时候可是考虑了这一点,所以用了异步处理,采用了MQ 那用的什么MQ呢,透露一下呗 我用的redis做的MQ,很 ...

  8. c#进阶(4)—— Redis 用于消息队列的存储

    1.参考的博文 a : http://www.cnblogs.com/lori/archive/2012/04/12/2443708.html -- 主要的实现思路 b:  http://www.cn ...

  9. Redis异步消息队列

    一.异步消息队列介绍 个人认为消息队列的主要特点是异步处理,主要目的是减少请求响应时间和解耦.所以主要的使用场景就是将比较耗时而且不需要即时(同步)返回结果的操作作为消息放入消息队列.同时由于使用了消 ...

最新文章

  1. 自定义listView添加滑动删除功能
  2. [每天一个知识点]1-程序员的三大美德(1)
  3. Construct Binary Tree from Preorder and Inorder Traversal
  4. CryEngine3 引擎非商业用途将免费
  5. MySQL:基本命令
  6. vue修改config后怎么生效_梦幻西游 金银锦盒修改后资金怎么攥 可以考虑跑商
  7. html控制弯曲图,html – CSS3 3D弯曲视角
  8. LINUX 内核调试基础+编程基础
  9. python库手册(官方)python文档
  10. 电脑如何让两个文件夹同步更新备份?
  11. Linux内核专题 - 介绍
  12. 【树莓派】设置树莓派开机自动运行python脚本
  13. 走好数据中台最后一公里,为什么说数据服务API是数据中台的标配?
  14. 卡方检验,U检验,t检验,F检验
  15. Intel Atom移动处理器惨败,还被用户和经销商起诉
  16. 【推荐】移动App测试中的最佳做法
  17. error: OpenCV(4.4.0) C:\Users\appveyor\AppData\Local\Temp\1\pip-req-build-h4wtvo23\opencv\
  18. 计算机云开头的词语,云开头的四字词语介绍
  19. 恢复Outlook 2010/2007已被删除邮件的方法
  20. 网络拓扑测绘之城域网拓扑

热门文章

  1. spring源码 — 一、IoC容器初始化
  2. magento本地安装成功后无法进入后台,密码和用户名均正确 .
  3. AMD为何要选择捆绑中国市场?
  4. 宇瞻U盘出现无法格式化 写保护的完美解决办法 厂家提供的
  5. Fotosifter中文版
  6. VMWare: eth0: error fetching interface information : device not found
  7. loaction.reload(false)和location.reload(true) js发起请求
  8. Codeforces 610C:Harmony Analysis(构造)
  9. jqGrid ColModel Options
  10. 关于web程序中使用KindEditor向数据库插入带有格式的数据时出现的问题