缓存性能瓶颈分析(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_