前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >redis :read error on connection

redis :read error on connection

作者头像
全栈程序员站长
发布2022-07-08 08:38:10
4280
发布2022-07-08 08:38:10
举报
文章被收录于专栏:全栈程序员必看

最近做了一个多人竞拍的小功能 因为以前没做过 所以踩了很多坑 用的是 mysql + php + redis 实现的竞拍功能

这里先说一下踩得第二个坑 redis 的原因 真是欲哭无泪 解决完一个 还有一个

其实是先发现的这个 但是没办法复现 就丢上去了执行了 之后偶然把这个问题复现了 先说一下是什么问题吧 php 捕获的异常提示是PHP Fatal error: Uncaught RedisException: read error on connection

很多人都说是 PHP-FPM的超时时间是1s钟,也就是说如果PHP程序执行超过1s钟就会中断,另外由于Redis是单线程的, 所以如果一个请求的时间太久就会造成Redis假死状态,接收不了其他请求,继而就会造成PHP程序连接报错。(这段话是我复制过来的) 说是设置php 超时时间 redis 超时时间 为-1就解决了 但没解释为什么 怎么就超时了 怎么验证超时时间可以解决

所以我才自己写的 不一定对 不一定能解决你的问题 但验证了我的问题 也解决了 redis keys * 这个操作我现在是不能容忍的 这尼玛 什么都不知道你就查 太浪费时间了 就是这个操作 造成了 (PHP Fatal error: Uncaught RedisException: read error on connection) 我们服务器设置的默认超时时间10秒 但是这了命令的执行时间超过了10秒 服务器数据也比较多吧 没用的数据也挺多的

当然 解决办法还是设置 redis 超时时间 但有些时候我们要弄清 为什么会出现这个问题 这个才是重要的

setOption(Redis::OPT_READ_TIMEOUT,-1);

用了这么久的redis,难道他是单线程的这个知识点都不知道吗(这是领导说我的,确实不知道 现在知道了)

debug sleep 20 //这句话能帮助你复现 你可以自己复现一下 来验证

https://blog.csdn.net/qq_35336004/article/details/80923425

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/112947.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021年10月,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档