关于Redis监控

什么是Redis?

Remote Dictionary Server(Redis) 远程字典服务器是完全开源免费的,用C语言编写的,遵守BSD开源协议,Redis是一个高性能的(key/value)分布式内存数据库,基于内存运行,并支持持久化的NoSQL数据库,它也通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。

Redis特点:

  1. 性能极高 – Redis读的速度是11W次/s,写的速度是81K次/s(Redis 的数据是存在内存中,存写速度非常快)

  2. 支持持久化,将内存中的数据保存在磁盘中,重启可以再次加载使用。

  3. 丰富的数据类型,Redis不仅仅支持简单的key-value类型的数据,同时还提供Strings, Lists, Hashes, Sets 及 Ordered Sets 等数据结构的存储。

  4. 支持数据的备份,即master-slave模式的数据备份。

Redis使用场景

查询出的数据保存到Redis中,下次查询的时候直接从Redis中拿到数据。不用和数据库进行交互,减轻数据库压力。

Redis性能指标:Performance

名称 描述
latency Redis响应一个请求的时间
instantaneous_ops_per_sec 平均每秒处理请求总数
hi rate(calculated) 缓存命中率(计算出来的

Redis内存指标: Memory

名称 描述
used_memory 已使用内存
mem_fragmentation_ratio 内存碎片率
evicted_keys 由于最大内存限制被移除的key的数量
blocked_clients 由于BLPOP,BRPOP,or BRPOPLPUSH而备阻塞的客户端

Redis基本活动指标:Basic activity

名称 描述
connected_clients 客户端连接数
conected_laves slave数量
master_last_io_seconds_ago 最近一次主从交互之后的秒数
keyspace 数据库中的key值总数

Redis持久性指标: Persistence

名称 描述
rdb_last_save_time 最后一次持久化保存磁盘的时间戳
rdb_changes_sice_last_save 自最后一次持久化以来数据库的更改数

Redis错误指标:Error

名称 描述
rejected_connections 由于达到maxclient限制而被拒绝的连接数
keyspace_misses key值查找失败(没有命中)次数
master_link_down_since_seconds 主从断开的持续时间(以秒为单位)

Redis监控方式

redis-benchmark

redis-stat

redis-faina

redislive

monitor

showlog

redis-cli

性能监控:

redis-cli info | grep ops # 每秒操作数

内存监控:

Redis消耗的资源
# ./redis-cli info | grep used | grep human
used_memory_human:2.99M  # 内存分配器从操作系统分配的内存总量
used_memory_rss_human:8.04M  #操作系统看到的内存占用,top命令看到的内存
used_memory_peak_human:7.77M # redis内存消耗的峰值
used_memory_lua_human:37.00K   # lua脚本引擎占用的内存大小
​
由于BLPOP,BRPOP,or BRPOPLPUSH而备阻塞的客户端
# ./redis-cli info | grep blocked_clients
blocked_clients:0
​
由于最大内存限制被移除的key的数量
# ./redis-cli info | grep evicted_keys
evicted_keys:0  #
​
Redis内存碎片率
./redis-cli info | grep mem_fragmentation_ratio
mem_fragmentation_ratio:2.74
​
Redis已使用内存
# ./redis-cli info | grep used_memory:
used_memory:3133624
​
Redis由于超出最大连接数限制而被拒绝的客户端连接次数,如果这个数字很大,则意味着服务器的最大连接数设置得过低,需要调整maxclients
# ./redis-cli info | grep connected_clients
connected_clients:1
​
Redis key值查找失败(没有命中)次数
# ./redis-cli info | grep keyspace
keyspace_misses:0
​
Redis主从断开的持续时间(以秒为单位)
# ./redis-cli info | grep rdb_changes_since_last_save
rdb_changes_since_last_save:0
​
复制积压缓冲区如果设置得太小,会导致里面的指令被覆盖掉而找不到偏移量,从而触发全量同步
# ./redis-cli info | grep backlog_size
repl_backlog_size:1048576
​
Redis通过查看sync_partial_err变量的次数来决定是否需要扩大积压缓冲区,它表示主从半同步复制失败的次数
# ./redis-cli info | grep sync_partial_err
sync_partial_err:1
​
​

1.get:获取慢查询日志

2.len:获取慢查询日志条目数

3.reset:重置慢查询日志

Redis命令交互

slowlog-log-slower-than 1000 # 设置慢查询的时间下线,单位:微秒
slowlog-max-len 100 # 设置慢查询命令对应的日志显示长度,单位:命令数

Redis info命令使用

1.server:服务器运行的环境参数
2.clients:客户端相关信息
3.memory:服务器运行内存统计数据
4.persistence:持久化信息
5.stats:通用统计数据
6.Replication:主从复制相关信息
7.CPU:CPU使用情况
8.cluster:集群信息
9.Keypass:键值对统计数量信息
​
##命令格式
#./redis-cli info 按块获取信息 | grep 需要过滤的参数
例
#./redis-cli info stats | grep ops
​#./redis-cli
> info server
​

Redis性能测试命令

#./redis-benchmark -c 100 -n 5000  #说明:100个连接,5000次请求对应的性能

关于缓存的几个问题

缓存穿透

描述:

故意去请求缓存中不存在的数据,从而去数据库中查,数据库中也没有,所以无法加到缓存,下次还是直接查询数据库,所以高并发的时候就导致数据库崩了。

解决方案:

1)利用互斥锁,缓存失效的时候,先去获得锁,得到锁了,再去请求数据库。没得到锁,则休眠一段时间重试。

2)数据库没查到数据,也往缓存中写入一个空值,但是设置失效时间短一点,防止恶意攻击。

缓存击穿

描述:

缓存击穿是指缓存中没有但数据库中有的数据,缓存的数据刚好过期(失效),这时并发用户特别多,同时读缓存没读到数据,直接在数据库去取数据,引起数据库压力瞬间增大,造成过大压力 ,可能导致数据库崩溃。

解决方案:

1、当多个线程同时去查询数据库的这条数据,那么我们可以在第一个查询数据的请求上使用一个互斥锁来锁住它 ,其他的线程走到这一步拿不到锁就等着,等第一个线程查询到了数据,然后做缓存。后面的线程进来发现已经有缓存了,就直接走缓存

2、可以将爆款的缓存失效时间设置为永久。

缓存雪崩

描述:

缓存雪崩是指缓存中数据大批量到过期时间,而大量查询打到数据库上,引起数据库压力过大甚至down机。和缓存击穿不同的是,缓存击穿指并发查同一条数据,缓存雪崩是不同数据都过期了,很多数据都查不到从而查数据库。

解决方案:

  1. 缓存预热就是系统上线后,将相关的缓存数据直接加载到缓存系统。这样就可以避免在用户请求的时候,先查询数据库,然后再将数据缓存的问题。

  2. 设置不同的过期时间,让缓存失效的时间点尽量均匀。

  3. 设置热点数据永远不过期。

关于Redis监控及缓存相关问题相关推荐

  1. Redis第一讲:相关的基础知识/数据类型/缓存的过期策略/双写一致性/内存存储和持久化

    Redis第一讲:相关的基础知识 摘要:本文是Redis(6.2.1)详解的第一讲,介绍Redis相关的基础知识,内存存储和持久化,Redis作缓存使用时的注意要点,常见的数据类型,缓存的过期策略,R ...

  2. 我为什么用ES做Redis监控,不用Prometheus或Zabbix?

    本文根据李猛老师在[deeplus直播第220期]线上分享演讲内容整理而成. 李猛 数据技术专家 Elastic-Stack产品深度用户,ES认证工程师,对Elastic-Stack开发.架构.运维有 ...

  3. 细说Redis监控和告警

    https://blog.csdn.net/qq_27623337/article/details/53206685 对于任何应用服务和组件,都需要一套完善可靠谱监控方案. 尤其redis这类敏感的纯 ...

  4. [转]细说Redis监控和告警

    原文  https://zhuoroger.github.io/2016/08/20/redis-monitor-and-alarm/? 对于任何应用服务和组件,都需要一套完善可靠谱监控方案. 尤其r ...

  5. Redis学习、缓存、持久化、哨兵模式

    个人博客欢迎访问 总结不易,如果对你有帮助,请点赞关注支持一下 微信搜索程序dunk,关注公众号,获取博客源码 我写代码是为了更好的表达自我,这是艺术创作,而不单单是为了把事情搞定. -Antirez ...

  6. Redis监控汇总一

    Redis监控汇总一 一.概述 对于任何运行在生产环境的软件,监控都是必不可少的一个环节. 我们在分析各种工具之前,先来看下redis都有哪些指标需要关注和监控. Redis监控的用途有两种,一种是类 ...

  7. Redis监控和告警

    对于任何应用服务和组件,都需要一套完善可靠谱监控方案. 尤其redis这类敏感的纯内存.高并发和低延时的服务,一套完善的监控告警方案,是精细化运营的前提. 本文分几节,细说Redis的监控和告警: 1 ...

  8. Redis监控步骤get!Google精髓的四大法则直接掌握

    Redis也是对外服务,所以Google四个黄金指标同样适用,还从延迟.流量.错误.饱和度分析Redis关键指标. 1 延迟 选择Redis是想得到更快响应速度和更高吞吐量,所以延迟数据对使用Redi ...

  9. 人生最好的php,mysql,linux,redis,docker等相关技术经典面试题,新手收藏学习,持续更新中。。。

    php面试题 1.写出你能想到的所有HTTP返回状态值,并说明用途(比如:返回404表示找不到页面) # 200:服务器请求成功 # 301:永久重定向,旧网页已被新网页永久替代 # 302:表示临时 ...

最新文章

  1. 一个链接orcal的标准链接方法
  2. elasticsearch查询及logstash简介
  3. Matlab 工具箱
  4. [暑假集训Day4T3]曲线
  5. python思想读后感_《Deep Learning with Python》读后感精选
  6. oracle00333,Oracle数据库REDO损坏ora-00333修复手札
  7. Bootstrap 按钮状态提示
  8. php中奖概率算法,可用于刮刮卡,大转盘等抽奖算法
  9. 【Elastischearch】7.6 版本 update 后 refresh 慢,性能问题导致稳定性问题
  10. MySQL做毕设_PHP+MYSQL在线小说阅读网的设计与实现
  11. SAE实践——用SVN命令行同步/提交代码
  12. 单个正态总体均值的区间估计_数理统计第20讲(单一正态总体区间估计)
  13. linux相关的东东 来自dbanotes
  14. 用什么擦地最干净脑筋急转弯_100个脑筋急转弯,很多人困在了第8题,赶快考考孩子吧...
  15. 手机app 与pc 软件测试区别,1,web测试,Android测试,Ios测试的共同点与
  16. 快捷方式 ABP——切换MySQL数据库
  17. .net企业实战视频就业培训
  18. 拼多多活动主图尺寸多少?企立方来告诉你!
  19. C++打开文件的方式
  20. IEEE Transactions on Intelligent Transportation Systems投稿经验分享

热门文章

  1. 软件开发过程(实习体会)
  2. pcie总线与cpci总线_一种基于CPCI与CPCIE总线的多功能背板_2010205852433_说明书_专利查询_专利网_钻瓜专利网...
  3. 通过依赖注入feign接口启动项目时报Error creating bean with name ‘xxxcontroller‘错误
  4. java阿里云直播推流拉流工具类
  5. [计算机网络]交换机VLAN的作用和原理
  6. Windows卷影复制
  7. Unity 动态修改URP自带材质参数
  8. Java 调用 扫描仪的技术该如何选择?
  9. 为什么你的微信群设置不了管理员?
  10. SQL语句增删改查/高级查询