当前位置: 首页 > news >正文

redis的性能管理

查看内存使用指标
 

查看内存使用指标
info memory used_memory:1800800 redis中主句占用的内存
used_memory_rss:5783552	redis向操作系统申请的内存
used_memory_peak:1800800使用内存的峰值

系统巡检:硬件巡检,数据库,nginx redis docker k8s

内存碎片率
used_memory_rss/used_memory系统已经分配给了redis,但是redis未能够有效利用的内存查看内存碎片率 redis-cli info memory | grep ratioallocator_frag_ratio:1.19
分配器碎片的比例,redis住金层调度时产生的内存,比例越小越好,值越高,内存的浪费越多allocator_rss_ratio:7.15
分配器占用物理内存的比例,告诉你主进程调度执行时占用了多少物理内存rss_overhead_ratio:0.31
rss是向系统申请的内存空间,redis占用物理空间额外的开销比例,比例越低越好,redis实际占用物理内存和向系统申请的内存越接近,额外的开销越低mem_fragmentation_ratio:3.33
内存碎片的比例,越低越好,内存的使用率越高
清理内存碎片率
自动清理内存碎片
vim /etc/redis/6379.conf
最后一行添加
activedefrag yes
重启服务手动清理内存碎片
redis-cli memory purge
自动触发清理内存碎片
设置redis的最大内存阀值
vim /etc/redis/6379.conf
567行
maxmemory lgb

一旦到达阀值,自动清理碎片,开启key的回收机制(回收键值对)

key回收的策略
vim /etc/redis/6379.conf
598行
maxmemory-policy volatile-lru
使用redis内置的LRU算法,把已经设置了过期时间的键值对中淘汰数据,移除最近最少使用键值对(针对已经设置了过期时间的键值对)maxmemory-policy volatile-ttl
已经设置了过期时间的键值对,从当中挑选一个即将过期的键值对(针对有设置过期时间的键值对)maxmemory-policy volatile-random
从已经设置了过期时间的键值对当中,挑选数据随机淘汰键值对(对设置了过期时间的键值对进行随机移除)allkeys-lru 
LRU算法当中,对所有的键值对进行淘汰,移除最少使用的键值对(针对所有的键值对)allkeys-random
从所有键值对当中任意选择数据进行淘汰maxmemory-policy noeviction
禁止键值对回收(不删除任何键值对,直到redis把内存塞满,写不了,报错)

在工作中,一定要给redis占用内存设置阀值

redis的雪崩

缓存雪崩:大量的应用请求无法在redis缓存当中处理,请求会全部发送到后台数据库,数据库并发能力就很差,一旦高并发,数据库很快崩溃

什么情况导致雪崩?

1、redis集群大面积故障

2、redis缓存中,大量数据同时过期,大量的请求无法得到处理

3、redis实例宕机

解决方案

事前:高可用架构,防止整个缓存故障,主从复制和哨兵模式 redis集群

事中:在国内用的比较多的方式:HySTRIX,熔断,降级,限流 ,用这个三个手段来降低雪崩发生之后的损失(数据库不死即可,慢可以,但是不能没有响应)

事后:redis备份,快速缓存预热

redis的缓存击穿
缓存击穿什么导致的呢?

缓存击穿主要是热点数据缓存过期,或者被删除,多个请求并发热点数据,请求也是转发到数据库了,导致数据库的性能快速下降

解决方法

经常被请求的缓存数据,最好设置为永不过期

键值对还在,但是值被替换了,原有的请求找不到之后,同样也回去请求后台数据库,也是击穿的一种

redis的缓存穿透

缓存中没有数据,数据库也没有对应数据,但是有用户一直发起这个都没有的请求,而且请求的数据格式很大,黑客在利用漏洞攻击,压垮应用数据库

http://www.lryc.cn/news/238833.html

相关文章:

  • es各种报错问题及解决方案20231121
  • python数据结构与算法-10_递归
  • 如何设计鞋材出库入账管理系统
  • 一个简单的QT应用示例
  • 南京数字孪生赋能工业制造,加速推进制造业数字化转型
  • Visual Studio Code 从英文界面切换中文
  • 邦芒支招:利用自荐电话求职的七大技巧
  • 埃尔米特插值(hermite 插值) C++
  • mysql优化之explain 以及 索引优化
  • WebSocket --- ws模块源码解析(详解)
  • 一文带你拿下MySQL之增删查改(基础)
  • 2023亿发数字化智能工单,专业管理工单处理全流程,助力企业转型腾飞
  • JavaScript 常用符号
  • GPT-4:论文阅读笔记
  • hm商城微服务远程调用及拆分
  • 设置指定时间之前的时间不可选
  • Java使用Redis来实现分布式锁
  • 移动端表格分页uni-app
  • 全志R128芯片RTOS调试指南
  • 超级实用的程序员接单平台,看完少走几年弯路,强推第一个!
  • 前端字符串方法汇总
  • 12 分布式锁加入看门狗
  • 怎么判断list是否为null
  • 11.数据公式中使用2个 $$ a =b $$,是什么意思?
  • 设计模式-14-迭代器模式
  • 防雷接地+防雷工程施工综合方案
  • 排序算法--选择排序
  • 【Web】Ctfshow SSRF刷题记录1
  • 【算法挨揍日记】day30——300. 最长递增子序列、376. 摆动序列
  • ROS2对比ROS1的一些变化与优势(全新安装ROS2以及编译错误处理)《1》