redis实现可靠的队列

转载 2018年04月16日 15:55:53
用redis brpop 或 blpop命令可以实现可靠的队列。  
其命令格式如:  
brpop|blpop list1 list2 list3 ... timeout  
  
参数:  
    list     列表集  
    timeout  阻塞时间,当 timeout 为 0 是表示阻塞时间无限制。  
      
返回值:  
    返回一个存在于 list1 或 list2 或 list3 里的元素(因为它是从 list1 –> list2 –> list3 这个顺序查起的第一个非空列表)。  
如:  
127.0.0.1:6379> brpop mylist1 0  
    1) "mylist1"  
    2) "dd"  
注:第一个元素是弹出元素的 key,第二个元素是 value。  
  
清空列队:  
127.0.0.1:6379>del mylist1   
  
当 brpop|blpop 返回一个元素给客户端的时候,它也从 list 中把该元素移除。这意味着该元素就只存在于客户端的上下文中:如果客户端在处理这个返回元素的过程崩溃了,那么这个元素就永远丢失了。  
在一些我们希望是更可靠的消息传递系统中的应用上,这可能会导致一些问题。在这种时候,请查看 BRPOPLPUSH 命令,这是 BLPOP 的一个变形,它会在把返回元素传给客户端之前先把该元素加入到一个目标 list 中。  
BRPOPLPUSH 是 RPOPLPUSH 的阻塞版本。  
命令格式:  
    BRPOPLPUSH list_source list_destination timeout  
元素从 list_source 中弹出来,并压入 list_destination 中。当 list_source 包含元素的时候,这个命令表现得跟 RPOPLPUSH 一模一样。 当 list_source 是空的时候,Redis将会阻塞这个连接,直到另一个客户端 push 元素进入或者达到 timeout 时限。 timeout 为 0 能用于无限期阻塞客户端。  
127.0.0.1:6379> lrange list1 0 -1  
(empty list or set)  
127.0.0.1:6379> lrange mylist 0 -1  
1) "d"  
2) "c"  
127.0.0.1:6379> brpoplpush mylist list1 0  
"c"  
  
127.0.0.1:6379> lrange list1 0 -1  
1) "c"  
127.0.0.1:6379> lrange mylist 0 -1  

1) "d"  




https://blog.csdn.net/u011341352/article/details/54139153

Redis实现可靠低延时的消息队列

Redis实现可靠低延时的消息队列
  • love_onon
  • love_onon
  • 2016-05-12 15:58:31
  • 5186

php+redis消息队列抢购实现

  • linlin_xia
  • linlin_xia
  • 2017-04-01 15:22:51
  • 1282

基于Redis实现分布式消息队列(4)

纯代码干货:访问Redis的工具类;队列接口;队列的Redis实现类;获取队列实例的工具类;向队列中添加任务的代码;从队列中取出任务执行的代码。...
  • stationxp
  • stationxp
  • 2015-05-15 01:31:50
  • 9719

redis队列的实现

redis队列的实现 redis中文官网:http://www.redis.cn/ 关于redis队列的实现方式有两种: 1、生产者消费者模式。 2、发布者订阅者模式。   详解: 1、生产者消费者模...
  • qq_37610423
  • qq_37610423
  • 2017-05-23 20:09:30
  • 3596

Redis实现缓存队列

原文来自:http://blog.csdn.net/zuoanyinxiang/article/details/50263945 1.用redis中的List可以实现队列,这样可以用来做消息处理和任务...
  • zhengjunqin
  • zhengjunqin
  • 2017-10-13 10:19:26
  • 303

利用Redis 实现消息队列

1.用redis中的List可以实现队列,这样可以用来做消息处理和任务调度的队列 2.代码模拟 代码结构 生产者模拟程序 /** * */...
  • ZuoAnYinXiang
  • ZuoAnYinXiang
  • 2015-12-11 19:27:18
  • 52607

基于Redis实现延迟队列

背景 在后端服务中,经常有这样一种场景,写数据库操作在异步队列中执行,且这个异步队列是多进程运行的,这时如果对同一资源进行写库操作,很有可能产生数据被覆盖等问题,于是就需要业务层在更新数据库之前进行...
  • u013279509
  • u013279509
  • 2017-12-08 10:43:27
  • 1239

基于redis+mysql+php的简单队列实现

消息队列在是分布式系统中必不可少的中间件,目前在生产环境,使用较多的消息队列有ActiveMQ,RabbitMQ,Kafka,RocketMQ等。然而对于一个要求不高的小型系统来说,单独使用维护这些队...
  • itest_2016
  • itest_2016
  • 2017-07-25 13:23:23
  • 1529

php-redis队列实现抢购商品

公司业务,为了对抗高并发业务,使用redis队列机制,大家可以一起参考参考 1,用户点击某个商品,首先进入的是商品详情页面,这时候我们将商品库存进行入队列    /*****************...
  • will5451
  • will5451
  • 2017-06-14 09:17:50
  • 2588

redis秒杀商品队列

$user_id=session('user_id');          header("Content-type:text/html;charset=utf-8");          $redi...
  • ztblog
  • ztblog
  • 2016-09-19 14:10:20
  • 3415
收藏助手
不良信息举报
您举报文章:redis实现可靠的队列
举报原因:
原因补充:

(最多只允许输入30个字)