redis调用时长过高

这个是我自己写的一个在切面里面格式化返回值的一个方法,但是redis的调用时长一直很高,有人知道是因为什么问题导致的吗

img

img

redis在服务器还是本地,有没有网络延迟

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7403419
  • 你也可以参考下这篇文章:分布式常见问题丨高并发时重复提交,基于Redis的幂等性解决方案来啦
  • 除此之外, 这篇博客: Redis不是一直号称单线程效率也很高吗,为什么又采用多线程了?中的 Redis为什么最开始被设计成单线程的? 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    Redis作为一个成熟的分布式缓存框架,它由很多个模块组成,如网络请求模块、索引模块、存储模块、高可用集群支撑模块、数据操作模块等。

    很多人说Redis是单线程的,就认为Redis中所有模块的操作都是单线程的,其实这是不对的。

    我们所说的Redis单线程,指的是"其网络IO和键值对读写是由一个线程完成的",也就是说,Redis中只有网络请求模块和数据操作模块是单线程的。而其他的如持久化存储模块、集群支撑模块等是多线程的。

    所以说,Redis中并不是没有多线程模型的,早在Redis 4.0的时候就已经针对部分命令做了多线程化。

    那么,为什么网络操作模块和数据存储模块最初并没有使用多线程呢?

    这个问题的答案比较简单!因为:"没必要!"

    为什么没必要呢?我们先来说一下,什么情况下要使用多线程?

  • 您还可以看一下 朱学超老师的Redis高并发秒杀和分布式锁技术应用及实战解析课程中的 Redis实现高并发秒杀小节, 巩固相关知识点
  • 以下回答来自chatgpt:

    切面是AOP编程中的一种技术,可以在目标方法执行前后添加自定义的逻辑。根据问题描述,在使用切面方法对返回值进行格式化处理后,发现Redis调用的时长明显增加。

    可能的原因: 1. 切面方法本身的耗时:切面方法可能包含了一些耗时操作,比如对返回值进行复杂的处理、远程调用等。如果切面方法本身执行时间较长,就会导致Redis调用的时长增加。 解决方法:检查切面方法的实现,优化耗时操作,减少执行时间。

    1. 频繁的Redis操作:切面方法可能会频繁地对Redis进行操作,比如每个线程都需要执行Redis写入操作。当并发量较高时,大量的Redis操作可能会导致Redis的负载加大,进而影响Redis的性能。 解决方法:
    2. 尝试使用批量操作代替频繁的单次操作,可以利用Redis的pipeline或者事务操作来批量处理数据。
    3. 如果可能的话,将Redis操作的频率降低,考虑在合适的时机进行操作,避免过多的Redis操作。

    4. Redis性能瓶颈:切面方法对Redis操作的频率增加可能暴露出Redis本身的性能瓶颈。如果Redis服务器的性能无法满足需求,就会导致调用时长增加。 解决方法:对Redis进行性能优化:

    5. 检查Redis的配置,确保Redis的最大连接数以及并发处理能力能够满足需求。
    6. 考虑使用Redis集群或者主从架构来提高Redis的负载能力。
    7. 考虑使用缓存策略,减少对Redis的直接操作,尽量缓存热点数据。

    综上所述,切面方法本身的耗时、频繁的Redis操作以及Redis性能瓶颈都可能导致Redis调用时长增加。我们可以通过对切面方法进行优化和对Redis性能进行调优来解决这个问题。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^