phpredis报错信息:protocol error, got 'o' as reply type byte解决方案

摘要:
今天,当前端调用PHP接口时,会报告一条错误消息:protocolror,got''asreplytypebyte。此外,此错误很可能再次出现,这不是强制性的。很困惑,百度发现这是Redis的错误。还附上了一个参考链接:1.关于github的phpredis项目的问题:https://github.com/phpredis/phpredis/issues/52在这个问题中,人们怀疑phpredis使用了长连接。在某些情况下,问题是由共享套接字引起的。它是否是fork()的原因也是未知的。建议在分叉时重新连接Redis2。遇到此问题的另一篇讨论文章:使用“讨论”呈现。

今天在前端调用PHP的接口时,有报错信息为:
protocol error, got 'o' as reply type byte
另外此错误有几率会重现,并不是必现的。十分疑惑,遂百度一下,发现是redis的错误。

网上说是redis的连接问题,解决方案为:
在redis.conf中
1、将bind参数注释
2、protected-mode由yes改为no

改完后重启redis服务。
暂时未发现问题会复现。

另附参考链接:
1、
github的phpredis项目issue中该问题的提问:https://github.com/phpredis/phpredis/issues/52
此问题中怀疑是phpredis使用的是长连接,某种情况下共用一个socket导致出问题,还有就是不知道是不是fork()的原因,并建议fork时重连redis

2、
另一篇遇到此问题的讨论帖:这个是用Discuss出现的。
https://www.52pojie.cn/forum.php?mod=viewthread&tid=446251&archive=1&extra=page%3D1&page=5
其中有个跟帖回复为:
觉得可能是使用了某个应用,没操作好redis,你是不是用了某个DZ应用?还是说某个很消耗内存的应用在近期使用量剧增了?然后协议乱了取数据的时候超时了。觉得可能是使用了某个应用,没操作好redis,你是不是用了某个DZ应用?还是说某个很消耗内存的应用在近期使用量剧增了?然后协议乱了取数据的时候超时了。
推荐修复方案:
如果找不到其他原因,那就修改一下PHP的配置,把soket超时设置一下
default_socket_timeout
个人觉得是某个山炮的DZ应用对redis没有操作好

免责声明:文章转载自《phpredis报错信息:protocol error, got 'o' as reply type byte解决方案》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇PLSQL创建Oracle定时任务EntityFramework Core 学习扫盲下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

分布式中使用Redis实现Session共享(二)

上一篇介绍了一些redis的安装及使用步骤,本篇开始将介绍redis的实际应用场景,先从最常见的session开始,刚好也重新学习一遍session的实现原理。在阅读之前假设你已经会使用nginx+iis实现负载均衡搭建负载均衡站点了,这里我们会搭建两个站点来验证redis实现的session是否能共享。 阅读目录 Session实现原理 sessio...

Redis——Springboot集成Redis集群

前言 在 springboot 1.5.x版本的默认的Redis客户端是 Jedis实现的,springboot 2.x版本中默认客户端是用 lettuce实现的。 Lettuce 与 Jedis 比较 Lettuce 和 Jedis 的都是连接 Redis Server的客户端。 Jedis 在实现上是直连 redis server,多线程环境下非线...

(转)淘淘商城系列——Redis持久化方案

http://blog.csdn.net/yerenyuan_pku/article/details/72858975 Redis中设置key的过期时间 Redis中的expire命令用于设置key的过期时间,以毫秒计。key过期后将不再可用。Redis中的expire命令基本语法如下: expire key second 设置成功返回1。当key不存在或...

.NET平台常用的框架整理

分布式缓存框架 Microsoft Velocity:微软自家分布式缓存服务框架。 Memcahed:一套分布式的高速缓存系统,目前被许多网站使用以提升网站的访问速度。 Redis:是一个高性能的KV数据库。它的出现很大程度补偿了Memcached在某些方面的不足。 EnyimMemcached:访问Memcached最优秀的.NET客户端,集成不错的分布...

ELK之filebeat收集多类型日志

1.IP规划 10.0.0.33:filebeat+tomcat,filebeat收集系统日志、tomcat日志发送到logstash 10.0.0.32:logstash,将日志写入reids(input、output) 10.0.0.31:redis,大量缓存数据 10.0.0.30:logstash,从redis取出数据写入es(input、outp...

Spring boot如何快速的配置多个Redis数据源

简介 redis 多数据源主要的运用场景是在需要使用多个redis服务器或者使用多个redis库,本文采用的是fastdep依赖集成框架,快速集成Redis多数据源并集成lettuce连接池,只需引入依赖后在yaml文件中配置多数据源连接信息即可。 源码地址 希望大家可以star支持一下,后续还会加入其它依赖的简易整合。https://github.com...