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

Redis性能管理

目录

1、内存碎片如何产生的?

2、跟踪内存碎片率对理解Redis实例的资源性能是非常重要的

3、解决碎片率大的问题

二、内存使用率

1、避免内存交换发生的方法

2、内回收key

三、缓存的穿透、击穿、雪崩


#查看Redis内存使用方法
info memory #进入数据库查看
redis-cli info memory#在redis数据库外面查看#内存碎片率
mem_fragmentation_ratio:    
#内存碎片率。mem_fragmentation_ratio=used_memory_rss/used_memory used memory rss:           #是Redis向操作系统申请的内存。
used memory:               #是Redis中的数据占用的内存
used_memory_peak;          #redis内存使用的峰值。

1、内存碎片如何产生的?

Redis内部有自己的内存管理器,为了提高内存使用的效率,来对内存的申请和释放进行管理。
Redis中的值删除的时候,并没有把内存直接释放,交还给操作系统,而是交给了Redis内部的内存管理器。
Redis中申请内存的时候,也是先看自己的内存管理器中是否有足够的内存可用。
Redis的这种机制,提高了内存的使用率,但是会使Redis中有部分自己没在用,却不释放的内存,导致了内存碎片的发生。

2、跟踪内存碎片率对理解Redis实例的资源性能是非常重要的

内存碎片率在1到1.5之间是正常的,这个值表示内存碎片率比较低,也说明Redis没有发生内存交换。
内存碎片率超过1.5,说明Redis消耗了实际需要物理内存的150%,其中50%是内存碎片率。
内存碎片率低于1的,说明Redis内存分配超出了物理内存,操作系统正在进行内存交换。需要增加可用物理内存或减少Redis内存占用。

3、解决碎片率大的问题

如果你的Redis版本是4.0以下的,需要在redis-cli工具上输入shutdown save命令,让Redis 数据库执行保存操作并关闭Redis服务,再重启服务器。Redis服务器重启后,Redis会将没用的内存归还给操作系统,碎片率会降下来。

Redis4.0版本开始,可以在不重启的情况下,线上整理内存碎片。

config set activedefrag yes #自动碎片清理,内存就会自动清理了。
memory purge                #手动碎片清理

二、内存使用率

redis实例的内存使用率超过可用最大内存,操作系统将开始进行内存与swap空间交换。

1、避免内存交换发生的方法

针对缓存数据大小选择安装Redis实例
尽可能的使用Hash数据结构存储
设置key的过期时间

2、内回收key

内存清理策略,保证合理分配redis有限的内存资源。

当达到设置的最大阀值时,需选择一种key的回收策略,默认情况下回收策略是禁止删除。

配置文件中修改maxmemory-policy属性值:

vim/etc/redis/6379.conf
--598--
maxmemory-policy noenviction
volatile-lru:     #使用LRU算法从己设置过期时间的数据集合中淘汰数据(移除最近最少使用的key,针对设置了TTL的key)
volatile-tt1:     #从己设置过期时间的数据集合中挑选即将过期的数据淘汰(移除最近过期的key)
volatile-random:  #从已设置过期时间的数据集合中随机挑选数据淘汰(在设置了TTL的key里随机移除)
allkeys-lru:      #使用LRU算法从所有数据集合中淘汰数据(移除最少使用的key,针对所有的key)
allkeys-random:   #从数据集合中任意选择数据淘汰(随机移除key)
noenviction:      #禁止淘汰数据(不删除直到写满时报错)

三、缓存的穿透、击穿、雪崩

  1. 穿透:通过防火墙,从一个网络到另一个网络
    
  2. 击穿:当一个数据被大量访问,对数据库的请求就会增多,就会宕机
  3. ​雪崩:相当于分布式系统上,一个节点故障,其他节点负载增加,导致一个系统奔溃

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

相关文章:

  • 计算机网络:局域网的数据链路层
  • Linux常见命令简介
  • 34-SDK设计(下):IAM项目GoSDK设计和实现
  • 基于Matlab的血管图像增强算法,Matlab实现
  • LeetCode每日一题之专题一:双指针 ——复写零
  • Golang基础-9
  • Vue基础知识:路由的封装抽离,路由模块的封装抽离的好处是什么?,如何快速的引入组件,基于@指代src目录,从src目录出发找组件
  • 插入排序---算法
  • Vue3 Vite 整合组件脚手架笔记
  • 续二叉搜索树递归玩法
  • DDD 的四层领域模型是怎样的?包含哪些基础概念?
  • AI 在医疗保健领域的应用:技术、趋势和前景
  • SVG XML 格式定义图形入门介绍
  • MYSQL数据库的故障排除与优化
  • C++从入门到精通——入门知识
  • 一些题目学习
  • Linux上管理文件系统
  • 【Linux】寿司线程池{单例模式之懒汉模式下的线程池}
  • Docker资源管理和分配指南
  • 为什么索引的底层结构是B+树
  • NLP学习路线指南总结
  • 试过了,ChatGPT确实不用注册就可以使用了!
  • CANoe自带的TCP/IP协议栈中TCP的keep alive机制是如何工作的
  • 【C++练级之路】【Lv.18】哈希表(哈希映射,光速查找的魔法)
  • 「PHP系列」If...Else语句/switch语句
  • Ubuntu部署BOA服务器
  • 安卓Glide加载失败时点击按钮重新加载图片
  • linux下python服务定时(自)启动
  • awk命令进阶操作(二)
  • 【洛谷 P8695】[蓝桥杯 2019 国 AC] 轨道炮 题解(映射+模拟+暴力枚举+桶排序)