1、Redis性能指标;
2、Redis配置文件;
通过Redis-cli命令行界面访问到Redis服务器,然后使用info命令获取所有与Redis服务相关的信息
比较重要的2部分性能指标memory和stats。
可以指定info命令的参数来获取单个分类下的数据。比如输入info memory命令,会只返回与内存相关的数据。
1、内存使用率used_memory
used_memory是Redis使用的内存总量,它包含了实际缓存占用的内存和Redis自身运行所占用的内存(如元数据、lua)。
used_memory 字段数据表示的是:由Redis分配器分配的内存总量,以字节(byte)为单位。
used_memory_human上的数据和used_memory是一样的值,它以M为单位显示,仅为了方便阅读。
2、命令处理数total_commands_processed
在info信息里的total_commands_processed字段显示了Redis服务处理命令的总数,其命令都是从一个或多个Redis客户端请求过来的。
3、内存碎片率mem_fragmentation_ratio
info信息中的mem_fragmentation_ratio给出了内存碎片率的数据指标,它是由操系统分配的内存除以Redis分配的内存得出。
跟踪内存碎片率对理解Redis实例的资源性能是非常重要的。内存碎片率稍大于1是合理的,这个值表示内存碎片率比较低,也说明redis没有发生内存交换。但如果内存碎片率超过1.5,那就说明Redis消耗了实际需要物理内存的150%,其中50%是内存碎片率。若是内存碎片率低于1的话,说明Redis内存分配超出了物理内存,操作系统正在进行内存交换。
4、回收key数量
info信息中的evicted_keys/ɪˈvɪktɪd/字段显示的是,因为maxmemory限制导致key被回收删除的数量。
回收key的情况只会发生在设置maxmemory值后,不设置会发生内存交换。 当Redis由于内存压力需要回收一个key时,Redis首先考虑的不是回收最旧的数据,而是在最近最少使用的key或即将过期的key中随机选择一个key,从数据集中删除。
软件包管理器。
基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。
yum install redis (是否安装过此软件?) Package redis-5.0.7-1.el7.remi.x86_64 already installed and latest version
如果找不到命令,说明对应的软件没有安装,去安装软件即可。
在linux上启动redis-stat:./redis-stat。
redis是否开启了AOF,0表示未开启,1表示开启;
配置文件一般在etc目录下,比如redis.conf,mysql.conf;
按 ESC :wq 保存并退出
在哪个目录下执行安装命令,当前软件就安装到那里。
service redis start # 启动redis;
service redis stop # 停止redis;
service redis status # 查看redis运行状态;
ps -ef | grep redis # 查看redis进程;
redis-cli # 进入本机redis;
keys * # 列出所有key;
ps aux | grep redis 这个命令对我帮助很大
# 将redis-cli拷贝到/usr/local/bin/下,让redis-cli指令可以在任意目录下直接使用;
sudo cp src/redis-cli /usr/local/bin/;
Redis性能监控之Redis-Stat
Redis-Stat是一个比较有名的redis指标可视化的监控工具,采用ruby开发,基于redis的info命令来统计,不影响redis性能。
鼠标放上去会显示完整的列名。
监听某个指定实例还是监听所有实例
redis性能监控工具;用 redis-stat 进行redis的性能数据收集;
Redis-Stat数据展示工具:控制台使用,web页面使用;
如何配置在web页面上展示(比较方便)? 对外映射端口即可。
linux上如何启动redis-stat? ./redis-stat
当前进程没有绑定到网卡上。
直接映射端口出去:浏览器能够访问;http://192.168.140.88:7006/
窗口关闭后台启动:使用nohup处理;
./redis-stat 192.168.140.88:6379 --server=7006 1 --daemon
./redis-stat 127.0.0.1:6379 --server=7006 1 --daemon
当前进程是否绑定到了网卡之上。
nohup ./redis-stat 127.0.0.1:6379 --server=7006 1 &
每隔1秒打印一次信息
service redis status
Linux netstat命令用于显示网络状态。利用netstat指令可让你得知整个Linux系统的网络情况。
netstat -tnpl
三大核心指标:每秒执行命令数,cpu使用率,内存使用率;
time: 更新参数时间
US: Redis 服务器使用的用户 CPU
SY: Redis 服务器使用的系统 CPU
CL: connected_clients:客户端连接数(不包括从站的连接数)
cmd/s: total_commands_processed_per_ses 服务器已每秒执行的命令数量
exp/s: expired_keys_per_second 因为过期而每秒被自动删除的数据库键数量
11evt/s: evicted_keys_per_second 因为最大内存容量限制而每秒被驱逐(evict)的键数量
hit%/s: keyspace_hits_ratio _per_second 查找数据库键成功的次数比例
hit/s: keyspace_hits _per_second 查找数据库键成功的次数
mis/s: keyspace_misses _per_second 查找数据库键每秒失败的次数
aofcs: aof_current_size AOF文件目前的大小
redis-cli 直接敲这个命令即可。
1慢日志:
1.1、通过命令[slowlog get]得到 Redis 执行的 slowlog 集合,理想情况下slowlog 集合应该为空即没有任何慢日志。
1.2、若发现有慢命令,则应该逐个分析是否正常,是否需要优化。
2存活情况:是最重要的健康指标,通过命令 PING 的响应是否为 PONG 来判断。
3连接数:connected_clients
3.1、连接的客户端数量,radis-stat 监控工具或命令 [redis-cli info Clients|grep connected_clients] 得到,这个值与使用Redis服务的连接池配置关系比较大,这个值如果很大,需要排查问题原因。
3.2、另外还有一个拒绝连接数(rejected_connections)也需要关注,这个值理想状态是0 。如果大于0,说明创建的连接数大于 maxclients,需要排查原因。是 Redis 连接池配合不合理还是连接这个Redis 的服务过多。
4 阻塞客户端数量:blocked_clients
4.1 blocked_clients 通常是执行了 list 数据类型的 BLPOP 或者 BRPOP 命令引起的,可以通过[redis-cli info Clients|grep blocked_clients]得到,这个值最应该=0。
5 使用内存峰值
5.1 监控 Redis 内存使用峰值,可以通过命令[config set maxmemory]设置允许使用的最大内存。
5.2 为了防止发生swap导致Redis性能骤减,甚至由于使用内存超标导致系统kill,建议used_memory_peak(占用内存的峰值)的值与maxmemory 的值有个安全区间,例如1G。
5.3 可用radis-stat查看used_memory图像化曲线找到占用内存的峰值。
6 内存碎片率:used_memory_rss/use_memory 这两个值可用radis-stat监控
6.1 mem_fragmentation_ratio = used_memory_rss/use_memory 当值大于1时,表示分配的内存超过实际使用的内存,数值越大[利用率不高],碎片率越严重。当这个值小于1时,表示发生了 swap(Swap分区在系统的物理内存不够用的时候,把物理内存中的一部分空间释放出来,以供当前运行的程序使用) ,既可用内存不足。
6.2 Redis4.0 有一个主要的特性就是优化内存碎片率问题(Memory de-fragmentation)。在redis.conf 配置文件中[ACTIVE DEFRAGMENTATION:碎片整理允许Redis压缩内存空间,从而回收内存。此特性默认是关闭的,可以通过命令CONFIG SET activedefrag yes 热启动这个特性]。
6.3 当内存使用量(use_memory)很小的时候,这个值参考价值不大。所以建议used_memory至少1G以上才考虑对内存碎片率进行监控。
7缓存命中率:keyspace_misses + keyspace_hits
7.1 keyspace_misses/keyspace_hits 这两个指标用来统计缓存的命中率,keyspace_misses值未命中次数,keyspace_hits 表示命中次数。keyspace_hits/(keyspace_misses+keyspace_hits) 就是缓存命中率。
7.2 如果缓存命中率过低,那么要排查对缓存的用法是否有问题。
8 OPS:instantaneous_pos_per_sec 表示缓存的OPS(operation per second 每秒操作次数)
9 持久化:
9.1 rdb_last_bgsave_status/aof_last_bgrewrite_status,即最近一次或者最后一次 RDB/AOF 持久化是否有问题,这两个值都应该时 “OK”。
由于 Redis 持久化时会 fork 子进程,且 fork 是一个完全阻塞的过程,所以可以监控 fork 耗时即:latest_fork_usec,单位是微妙,如果这个值比较大会影响业务,甚至出现 timeout 。
9.2失效KEY:如果把 Redis 当缓存使用,那么建议所有的key都设置expire属性,通过命令redis-cli info Keyspace 得到每个 db 中 key 的数量和设置了 expire属性的 key 的属性,且 expires(表示设置了超时时间的key个数) 需要 等于 keys。
Redis对用户信息怎么处理的,登录成功后如何保存本地信息,Redis缓存哪些信息?
Redis计数器:Redis Incr命令将key中储存的数字值增一。如果key不存在,那么key的值会先被初始化为0,然后再执行INCR操作。一般通常用来当做计数器来用。
Redis的单点安装,以及开始两种持久化操作;
Redis如何部署集群,设置各个节点之间的关系,如何建立主从模式?
使用redis做限流功能?
Redis的性能监控工具以及Redis的性能,最新版redis客户端只能看到粗略的情况?
如何封装本地缓存框架?
Cache类似于Map,它是存储键值对的集合。
//设置cache的初始大小为10,要合理设置该值
//设置并发数为5,即同一时间最多只能有5个线程往cache执行写入操作
内存使用率是Redis服务最关键的一部分。如果一个Redis实例的内存使用率超过可用最大内存 (used_memory >可用最大内存)
如果存储的是对象,需要把对象转化成String存储,所以使用了序列化工具。
getIfPresent(String key)
通过key获取缓存中的value,若不存在直接返回null。
Redis 一定会牵涉到序列化与反序列化的问题。
如何读取配置文件CacheConfig
创建一个统一的操作redis Client的工具类
Redis中涉及的异常处理?当前框架哪些操作redis不支持?
如何设置缓存的定时刷新?Cache
Redis 连接池的常用配置以及使用,关闭连接资源
Redis Cluster客户端命令
参考:
https://www.cnblogs.com/shamo89/p/8384921.html
https://www.cnblogs.com/gossip/p/5993922.html