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

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

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
讨论数量: 29

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

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

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

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

1年前 评论
寞小陌 (楼主) 1年前

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

1年前 评论

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

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

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

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

1年前 评论
寞小陌 (楼主) 1年前
sanders

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

1年前 评论

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

1年前 评论
寞小陌 (楼主) 1年前
kolin (作者) 1年前
寞小陌 (楼主) 1年前
kolin (作者) 1年前

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

1年前 评论
寞小陌 (楼主) 1年前
deatil (作者) 1年前

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

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

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

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

1年前 评论
寞小陌 (楼主) 1年前

monitor 监控一下 redis

1年前 评论

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

1年前 评论
Junwind

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

1年前 评论
寞小陌 (楼主) 1年前
李铭昕

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

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

1年前 评论
寞小陌 (楼主) 1年前

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

1年前 评论
寞小陌 (楼主) 1年前

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

1年前 评论