Redis队列和阻塞队列的实现

 更新时间:2023年11月10日 11:22:06   作者:xdscode  
本文主要介绍了Redis队列和阻塞队列的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

redis 队列的优点是轻量级,业务足够简单时不需要使用rabbitMq这样专业的消息中间件;缺点是弹出队列中的元素时,即使该消息处理失败也无法再次进行消费

Redis队列 List

Redis队列和阻塞队列_redis

简单演示如下

Redis队列和阻塞队列_阻塞队列_02

普通的redis队列,为了实现业务,通常会使用while进行循环,这样的话没有消息时依旧会频繁的执行循环,造成cpu的空转,所以一般会在代码中增加sleep来解决该问题,但因此又会造成消息延迟问题。

Redis队列和阻塞队列_redis_03

阻塞队列可以很好的解决这些问题。

Redis阻塞队列

redis队列提供了 “阻塞式” 拉取消息的命令:BRPOP / BLPOP,这里的 B 指的是阻塞(Block)。如果队列为空,消费者在拉取消息时就「阻塞等待」,一旦有新消息过来,就通知消费者立即处理新消息。

Redis队列和阻塞队列_redis_04

阻塞队列实现:

Redis队列和阻塞队列_redis_05

使用 BRPOP 这种阻塞式方式拉取消息时,还支持传入一个「超时时间」,如果设置为 0,则表示不设置超时,直到有新消息才返回,否则会在指定的超时时间后返回 NULL

下面是某业务完整的消费者代码

Redis队列和阻塞队列_阻塞队列_06

注意:

  1. 阻塞时间结束后代码会继续向下执行
  2. 如果设置的超时时间太长,这个连接太久没有活跃过,可能会被 Redis Server 判定为无效连接,之后 Redis Server 会强制把这个客户端踢下线。所以,客户端要有处理机制。实际项目中redis连接超时时间远大于20s,因此正常情况不会出现redis超时问题。以防万一增加redis异常捕获,出现异常时杀掉当前进程,同时supervisord会自动重新拉起该进程

 到此这篇关于Redis队列和阻塞队列的实现的文章就介绍到这了,更多相关Redis队列和阻塞队列内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • redis 过期策略及内存回收机制解析

    redis 过期策略及内存回收机制解析

    这篇文章主要介绍了redis 过期策略及内存回收机制,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • Redis设置永久密码方式

    Redis设置永久密码方式

    找到Redis安装目录下的redis.windows.conf文件,搜索并设置requirepass参数为自定义密码,保存修改后重启服务,以增强安全性,此为个人经验,供参考
    2025-07-07
  • redis防止短信恶意调用的实现

    redis防止短信恶意调用的实现

    本文主要介绍了在场景登录或注册接口中使用短信验证码时遇到的恶意调用问题,并通过使用Redis分布式锁来解决,具有一定的参考价值,感兴趣的可以了解一下
    2025-02-02
  • Redis实战之Lettuce的使用技巧详解

    Redis实战之Lettuce的使用技巧详解

    Lettuce 是 Redis 的一款高级 Java 客户端,与 Jedis 并列成为最热门的客户端之一,目前已成为 SpringBoot 2.0 版本默认的 redis 客户端。本文主要和大家讲讲Lettuce的使用技巧,感兴趣的可以了解一下
    2022-12-12
  • Redis反序列化失败的解决方法

    Redis反序列化失败的解决方法

    在使用Redis缓存数据的过程中,有时会遇到反序列化失败的问题,本文主要介绍了Redis反序列化失败的解决方法,具有一定的参考价值,感兴趣的可以了解一下
    2023-11-11
  • redis集群部署方案和redis常用命令

    redis集群部署方案和redis常用命令

    本文介绍了部署Redis集群的详细步骤以及常用命令和管理操作,同时提醒了生产环境中的注意事项,如配置持久化、密码认证和时钟同步,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2026-01-01
  • Redis Lua同步锁实现源码解析

    Redis Lua同步锁实现源码解析

    这篇文章主要为大家介绍了Redis Lua同步锁实现源码解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • Redis特殊数据类型bitmap位图

    Redis特殊数据类型bitmap位图

    这篇文章主要为大家介绍了Redis特殊数据类型bitmap位图,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • Redis集群模式和常用数据结构详解

    Redis集群模式和常用数据结构详解

    Redis集群模式下的运维指令主要用于集群的搭建、管理、监控和维护,讲解了一些常用的Redis集群运维指令,本文重点介绍了Redis集群模式和常用数据结构,需要的朋友可以参考下
    2024-03-03
  • Redis之大key热点key的问题及处理

    Redis之大key热点key的问题及处理

    文章主要介绍了Redis中大键(BigKey)和热点键(HotKey)的概念及其危害,并提供了相应的解决方案,针对大键,提出了拆分、删除、监控等方法;针对热点键,提供了存储、查询优化方案,另外,还介绍了阿里云Tair服务在处理大键和热点键方面的高级功能
    2026-04-04

最新评论