Skip to content

缓存性能瓶颈分析(redis)

缓存性能瓶颈分析(redis)

redis 介绍

Redis 是开源的高性能键值存储系统,已经被广泛应用于 web 应用程序、缓存、消息队列、会话存储等方面。然而,在高并发场景下,Redis 可能会面临诸如内存溢出、CPU 负载高等问题。为了保障 Redis 的稳定性和高可用性,我们需要监控 Redis 的运行情况,及时发现并解决问题。 Memcached 是开源的分布式的高速缓存系统,侧重于⾼性能内存/缓存系统,IO 模型:多线程非阻塞

Redis 是开源的(遵从 BSD 协议)高性能键值对(key-value)的内存数据库,可以用作数据库、缓存、消息中间件等。它是一种 NoSQL(not-only sql,泛指非关系型数据库)的数据库。IO 模型:单线程多路复用。

redis 集群介绍

redis 性能关注点

Redis 监控指标

redis-stat 控制台

内存使用率

  • INTERNAL_USED_MEMORY:Redis 使用的内部结构所占用的内存大小。
  • EXTERNAL_USED_MEMORY:Redis 使用的键和值所占用的内存大小。
  • TOTAL_USED_MEMORY:Redis 总共使用的内存大小。
  • MAX_MEMORY:Redis 设置的最大内存值。
  • MEMORY_USED_PERCENTAGE:Redis 当前内存使用率。

命中率

  • KEYS:Redis 中存储的 Key 数量。
  • HITS:Redis 中 Get 命令的命中数量。
  • MISSES:Redis 中 Get 命令的未命中数量。
  • HIT_RATE:Redis 当前命中率。

请求次数与响应时间

  • COMMANDS_PER_SECOND:Redis 的每秒请求次数。
  • MEAN_CPU_USAGE:Redis 的平均 CPU 占用率。
  • MEAN_LATENCY:Redis 的平均响应时间。

数据存储

  • DB_SIZE:Redis 中存储的数据量。
  • EXPIRED_KEYS:Redis 中已过期的 Key 数量。
  • EVICTED_KEYS:Redis 中被清除的 Key 数量。

副本同步

  • MASTER_LINK_STATUS:Redis 主节点连接从节点的状态。
  • REPLICA_LINK_STATUS:Redis 从节点连接主节点的状态。

客户端连接

如何使用命令行工具监控 Redis: 我们可以使用 redis-cli 命令行工具来监控 Redis。下面以内存使用率和命中率为例:

  • CLIENTS_CONNECTED:Redis 当前连接的客户端数量。
  • BLOCKED_CLIENTS:因等待资源而被阻塞的客户端数量。

查看关键指标

查看内存使用率

通过命令info memory可以查看 Redis 的内存使用情况,其中used_memory_human表示 Redis 使用的总内存,used_memory_rss_human表示 Redis 使用的物理内存: redis-cli info memory | grep used_memory_

查看命中率

通过命令info stats可以查看 Redis 的命中率情况,其中keyspace_hits表示 Get 命令的命中数量,keyspace_misses表示 Get 命令的未命中数量,keyspace_hit_ratio表示当前命中率:redis-cli info stats | grep keyspace_