• redis的性能管理


    redis的性能管理:redis的数据缓存在内存当中

    used_memory:1800800 redis中数据占用的内存

    used_memory_rss:5783552 redis向操作系统申请的内存

    used_memory_peak:1800800 redis使用内存的峰值

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

    内存碎片率used_memory_rss/used_memory

    系统已经分配给了redis,但是redis未能够有效利用的内存

    allocator_frag_ratio:1.34

    分配器碎片的比例,redis主进程调度时产生的内存,比例越小越好,值越高,内存的浪费越多

    allocator_rss_ratio:5.93

    分配器占用物理内存的比例,告诉你主进程调度执行时占用了多少物理内存。

    rss_overhead_ratio:1.41

    RSS时向系统申请的内存空间,redis占用物理空间额外的开销比例,比例越低越好,redis实际占用的物理内存和向系统申请的内存越接近,额外的开销越低。

    mem_fragmentation_ratio:15.57 内存碎片的比例,越低越好,内存的使用率越高

    自动清理碎片;

    activedefrag yes 自动清理

    手动清理;

    redis-cli memory purge

    自动触发需要设置redis的最大内存阀值:

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

    key回收的策略;

    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占用的内存的效率问题如何解决:

    1、日常巡检当中,对redis的占用情况做监控

    2、设置redis占用的系统内存的阀值。避免占用系统全部内存

    3、内存碎片清理,手动自动。

    4、配置合适的key的回收机制

    redis雪崩:

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

    1、redis集群大面积故障

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

    3、redis实例宕机

    解决方案:

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

    事中:在国内用的比较多的方式:HsTRIX,熔断,降级,限流三个手段来降低雪崩发生之后的损失

    数据库不死即可,慢可以,但是不能没有响应。

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

    redis的缓存击穿:

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

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

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

    redis的缓存穿透:

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

    redis的集群

    高可用方案;

    1、持久化

    2、高可用 主从复制 哨兵模式

    主从复制是redis实现高可用的基础,哨兵模式和集群都是在主从复制的几乎之上实现高可用。

    主从复制实现数据的多机备份,以及读写分离(主服务器负责写,从服务器只能读)

    缺陷:故障无法自动恢复,需要人工干预,写操作的负载均衡。

    主从复制的工作原理

    1、主节点(master)从节点(slave)组成,数据复制单向的,只能从主节点到从节点。

    2、主从复制架构

    20.0.0.101 主

    20.0.0.102 从1

    20.0.0.103 从2

    哨兵模式先有主从再有哨兵

    在主从复制的基础之上,实现主节点故障的自动切换

    哨兵模式的原理

    哨兵;是一个分布式系统,用于在主从结构之间,对每台redisd的服务进行监控

    主节点出现故障时,从节点通过投票的方式选择一个新的master

    哨兵模式也需要至少三个节点

    哨兵模式的结构

    哨兵节点:监控,不存储任何数据

    数据节点:主节点和从节点都是数据节点

    sentinel monitor mymaster 20.0.0.101 6379 2

    2表示至少两台服务器认为主已经下线了,才会进行故障转移,主从切换

    总结

    主从复制架构

    20.0.0.101 主

    20.0.0.102 从1

    20.0.0.103 从2

    vim /etc/redis/6379.conf

    主上

    两个从

    哨兵模式

    主从的配置

    vim /opt/redis-5.0.7/sentinel.conf

    原主变成从只能读不能写

    第一个从变成主

  • 相关阅读:
    使用 Docker 安装 Elasticsearch (本地环境 M1 Mac)
    uniapp h5使用原生的input标签
    朴素贝叶斯模型
    JavaScript实现快速排序
    API经济下新物种的诞生
    PDFiumCore:.Net里的PDF渲染引擎
    学信息系统项目管理师第4版系列24_整合管理
    dll修复工具安装教程
    linux离线源码安装Redis
    uniapp存值和取值方法
  • 原文地址:https://blog.csdn.net/m0_52416577/article/details/134552078