Redis明明存在值,为什么有时候取不到?

redis存了某个应用的token,属于是一个热key,调用的频率估计每分钟30次左右;
大部分的时间是能够读取到值的,但是有时候会连着读取不到。
想问一下 大佬们该从哪些角度去排查问题。
命中率在 98.08% 左右
redis信息
Redis明明存在值,为什么有时候取不到?

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 29

如果确认 key 一直存在但是「取不到数据」的话,可以从两个方面来定位:一是「取没取」,二是「动没动」。

「取没取」可以通过 monitor 命令定位跟踪下,之前写过一篇文章《Redis 实用小技巧——谁动了我的 Redis ?》,可参考下思路。这一步可以排除程序有没有成功请求到 Redis 。

如果第一步没有问题的话,那就看一下「动没动」的问题:即取到的数据有没有经过「过滤层」被过滤掉,这种情况可以根据系统日志进行定位。

抛开以上两个方向,一般概率性的问题,可以考虑请求是否由不同的客户端发起:从服务端角度分析,这一点从 monitor 上可以判断出来。从客户端角度分析,看下有没有使用负载,多进程等,客户端信息存在不同步的情况。

10个月前 评论
寞小陌 (楼主) 10个月前

laravel 几? 以及是否有用 laravel-s 加速?

10个月前 评论

排除角度就是你用的是 php-redis 还是 predis, 可以换成另一个(呼唤下),试试效果

10个月前 评论
寞小陌 (楼主) 10个月前
陈先生
  1. 使用频率是 30次/m,更新频次呢?
  2. 有没有做对应的曲线来查看在何时取不到数据以及数据在何时消失的?
  3. 有没有看 redis 的日志或者 AOF 文件来确认是否读取时已被删除?
10个月前 评论
寞小陌 (楼主) 10个月前
寞小陌 (楼主) 10个月前

是不是 set 的时候设置了过期时间,然后过期了。

也有可能是网络链接问题,我之前做过 Command 里面监听 redis 发布订阅, 然后时间长了 redis 链接超时的问题。 那个问题的表现就是收不到消息了, 后来发现是 redis 链接超时了。 博客:解决 laravel-sail 环境下, redis subscribe 运行一段时间后报错的问...

10个月前 评论
寞小陌 (楼主) 10个月前
sanders

可以试试用 redis 客户端登录后使用 monitor 命令看看命令被执行的过程。

10个月前 评论

好奇是中间取不到 过了一会又能取到 还是说一直就取不到了

10个月前 评论
寞小陌 (楼主) 10个月前
kolin (作者) 10个月前
寞小陌 (楼主) 10个月前
kolin (作者) 10个月前

合理猜测是key过期了就取不到,后面又取得到那是过期后又设置了一次。推荐检测过期时间设置是否合理

10个月前 评论
寞小陌 (楼主) 10个月前
deatil (作者) 10个月前

如果确认 key 一直存在但是「取不到数据」的话,可以从两个方面来定位:一是「取没取」,二是「动没动」。

「取没取」可以通过 monitor 命令定位跟踪下,之前写过一篇文章《Redis 实用小技巧——谁动了我的 Redis ?》,可参考下思路。这一步可以排除程序有没有成功请求到 Redis 。

如果第一步没有问题的话,那就看一下「动没动」的问题:即取到的数据有没有经过「过滤层」被过滤掉,这种情况可以根据系统日志进行定位。

抛开以上两个方向,一般概率性的问题,可以考虑请求是否由不同的客户端发起:从服务端角度分析,这一点从 monitor 上可以判断出来。从客户端角度分析,看下有没有使用负载,多进程等,客户端信息存在不同步的情况。

10个月前 评论
寞小陌 (楼主) 10个月前

monitor 监控一下redis

10个月前 评论

检查redis连接池和redis key的命中率

10个月前 评论
Junwind

有没有一种情况,瞬间并发大的情况,redis 连接数过多,或redis负载高,阻塞了,取不到; 等负载下降了,又取到了。

10个月前 评论
寞小陌 (楼主) 10个月前
李铭昕

说一下存取的命令,还有redis的基本情况。

比如 Redis 是集群么?连接的事代理么?读取时是否使用了 mget 批量读取?

10个月前 评论
寞小陌 (楼主) 10个月前

可以预埋一个无用的 key,当取不到 token 时去读取 key

10个月前 评论
寞小陌 (楼主) 10个月前

命中率在98.08%左右,但还是有时候查不到数据

8个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!