Redis使用list数据结构做消息队列的时候需要注意哪些问题?

提问者:帅平 问题分类:微服务
Redis使用list数据结构做消息队列的时候需要注意哪些问题?
2 个回答
宁愿短发披肩
宁愿短发披肩
使用redis的list数据结构做消息队列的时候,生产者一般使用lpush推送数据,消费者使用rpop方式拉取数据。但是当list结构里面没有数据的时候,就会返回null,一般我们的消费者为了尽快处理数据,会进行频繁拉取,但是list又没有数据,此时就会浪费大量的CPU资源,造成空转的现象。同时还会对redis造成请求压力。常用的解决方案是,当队列为空的时候,让程序休眠一会。
发布于:1个月前 (04-02) IP属地:四川省
勿忘心安
勿忘心安
还可以使用BRPOP / BLPOP的方案避免空转,这个命令会设置一个超时时间,例如:
#0表示不设置超时时间
msg = redis.brpop("queue", 0)

此时只要不超时就会一直阻塞,当有消息的时候再返回。
发布于:1个月前 (04-02) IP属地:四川省
我来回答