redis的性能管理

1.redis的性能管理

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

2.查看redis的内存信息

info memory

指标:

used_memory:1800800 redis数据占用的内存

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

used_memory_peak:1800800 redis使用内存的峰值

3.内存碎片率

redis-cli info memory | grep ratio

allocator_frag_ratio:1.26

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

allocator_rss_ratio:5.17

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

rss_overhead_ratio:1.17

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

mem_fragmentation_ratio:13.33

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

4.清理碎片

4.1 自动清理碎片

vim /etc/redis/6379.conf

最后一行插入

activedefrag yes

4.2 手动清理

redis-cli memory purge

5.redis的最大阀值和key的回收策略

5.1 最大内存阀值

设置redis的最大内存阀值:一旦到达阀值,自动清理碎片,开启key的回收机制

vim /etc/redis/6379.conf

567gg插入

maxmemory 1gb

5.2 key回收的策略

maxmemoey-policy volatile-lru :使用redis内置的LRU算法,把已经设置了过期时间的键值对中淘汰数据,移除最近最少使用的键值对(针对已经设置了过期时间的键值对)

maxmemory-policy volatile-ttl:已经设置了过期时间的键值对,从当中挑选一个即将过期键值对(针对有设置过期时间的键值对)

maxmemory-policy volatile-random:从已经设置了过期时间的键值对当中,挑选数据随便淘汰键值对。(对设置了过期时间的键值对进行随机移除)

allkeys-lru:LRU算法当中,对所有的键值对进行淘汰,移除最少使用的键值对。(针对所有的键值对)

allkeys-random:从所有键值对当中任意选择数据进行淘汰。(没人用)

maxmemory-policy noeviction:禁止键值对回收(不删除任何键值对,直到把redis把内存塞满,写不了为止)

6.redis占用的内存的效率问题如何解决?

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

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

3.内存碎片清理,手动(redis-cli memory purge),自动(vim /etc/redis/6379.conf,最后一行插入,activedefrag yes)

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

7.redis雪崩

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

redis集群大面积故障

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

redis实例宕机

解决方案:

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

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

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

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

8.redis的缓存击穿

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

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

9.redis的缓存穿透

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

你可能感兴趣的:(redis,java,spring)