zoukankan      html  css  js  c++  java
  • redis变慢以及优化方法

    确定问题

    1、查看 Redis 的响应延迟。
    2、基于当前环境下的 Redis 基线性能做判断
    基线性能是系统在低压力、无干扰下的基本性能,Redis 运行时延迟是其基线性能的 2 倍及以上,可认定 Redis 变慢了。

    问题定位

    1、通过 Redis 日志,或者是 latency monitor 工具,查询变慢的请求,确认是否采用了复杂度高的慢查询命令。
    2、检查业务代码在使用 EXPIREAT 命令设置 key 过期时间时,是否使用了相同的 UNIX 时间戳,有没有使用 EXPIRE 命令给批量的 key 设置相同的过期秒数。从而造成大量 key 在同一时间过期,导致性能变慢。删除操作是阻塞的(Redis 4.0 后可以用异步线程机制来减少阻塞影响)
    3、检查是否使用了慢查询命令,KEYS *xxx

    优化

    1.a.用其他高效命令代替。比如说,如果你需要返回一个 SET 中的所有成员时,不要使用 SMEMBERS 命令,而是要使用 SSCAN 多次迭代返回,避免一次返回大量数据,造成线程阻塞。
    1.b.当你需要执行排序、交集、并集操作时,可以在客户端完成,而不要用 SORT、SUNION、SINTER 这些命令,以免拖慢 Redis 实例。

    2.如果一批 key 的确是同时过期,你还可以在 EXPIREAT 和 EXPIRE 的过期时间参数上,加上一个一定大小范围内的随机数

    3.获取整个实例的所有key,建议使用SCAN命令代替。客户端通过执行SCAN $cursor COUNT (count可以得到一批key以及下一个游标)cursor,然后把这个(cursor当作SCAN的参数,再次执行,以此往复,直到返回的)cursor为0时,就把整个实例中的所有key遍历出来了。

  • 相关阅读:
    careercup-树与图 4.6
    careercup-树与图 4.5
    careercup-树与图 4.4
    careercup-树与图 4.3
    oracle 建表时显示ORA-00904无效的标识符
    Unable to read TLD "META-INF/c.tld" from JAR file
    MIME TYPE
    JavaWeb response对象常用操作
    移动硬盘文件删除后,空间没有变大
    Redis 数据结构解析和命令指南
  • 原文地址:https://www.cnblogs.com/hainingwyx/p/13855184.html
Copyright © 2011-2022 走看看