扫码关注官方订阅号
我创建多个进程去同时读取redis做的消息队列 请问这个会发生读取冲突么? 原因是什么呢?
认证高级PHP讲师
不会冲突,队列中的每个元素只会被读取一次。
只是读取没问题。。。
redis自己保证队列读写的互斥。redis是单线程,工作方式大概是这样的。你的多进程读取其实是可以并行发多个读取请求包,这些请求包到达redis的socket buffer中,redis的处理是串行响应你的请求,无锁。如果哪天redis改成多线程的方式,同样可以通过加锁互斥保证队列的读取不会出事情。
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
扫描下载App
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
不会冲突,队列中的每个元素只会被读取一次。
只是读取没问题。。。
redis自己保证队列读写的互斥。redis是单线程,工作方式大概是这样的。你的多进程读取其实是可以并行发多个读取请求包,这些请求包到达redis的socket buffer中,redis的处理是串行响应你的请求,无锁。如果哪天redis改成多线程的方式,同样可以通过加锁互斥保证队列的读取不会出事情。