Redis常见问题:雪崩与穿透.以及Redis内存优化

1.Redis常见问题

1.1缓存穿透

特点:用户高并发访问环境下,查询数据库不存在的数据
影响:由于用户高并发访问,则数据库可能宕机
解决方案:
1.API网关
2.限定ip的访问次数.
在这里插入图片描述

1.2缓存击穿

原因:由于用户"高并发"的访问,访问的数据刚开始有缓存,由于特殊原因,导致少量缓存失效(数据’‘单个’’).用户的请求直接访问数据库
特点:时间较短,只影响一段时间
解决方案:
让业务查询多个redis,并且保证数据不再同一时间失效即可.
在这里插入图片描述

1.3缓存雪崩

原因:由于高并发的环境下.大量的用户访问服务器. redis中有大量的数据在同一时间超时(删除).
解决方案:不要同一时间删除数据.
在这里插入图片描述

1.4Redis持久化问题

1.4.1问题说明

Redis中的数据都保存到内存中,如果服务关闭或者宕机则内存资源直接丢失,导致缓存失效

1.4.2 持久化原理说明

Redis中有自己的持久化策略,Redis启东市根据配置文件中指定的持久化方式进行持久化操作
Redis中默认的持久化操作方式为RDB模式.

1.4.3RDB模式

特点:
1.RDB模式采用定期持久化的方式. 风险:可能丢失数据.
2.RDB模式记录的是当前Redis的内存记录快照.只记录当前状态.持久化效率是最高的
3.RDB模式是默认的持久化的方式,

持久化命令:
1:sava 同步操作,要求立即马上持久化(可能对现有的操作造成阻塞)
2:bgsava 异步操作,开启单独的线程实现持久化任务

持久化周期:
sava 900 1 在900秒内,如果执行一次更新操作,则持久化一次
sava 300 10 在900秒内,如果执行十次更新操作,则持久化一次
sava 60 10000 在900秒内,如果执行一万次更新操作,则持久化一次
用户操作越频繁,则持久化周期越短

1.4.4AOF模式

特点:
1.AOF模式默认是关闭状态,如果需要则手动开启.
2.AOF模式能够记录程序的执行过程,可以实现数据的实时持久化,AOF文件占用空间较大,回复数据的速度较慢
3.AOF模式启动之后,RDB模式将不生效

AOF的配置
appendonly no 默认为no,手动改为yes,重启redis即可.
在这里插入图片描述

持久化周期配置:
appendfsync always 实时持久化.
appendfsync everysec 每秒持久化一次 略低于rdb模式
appendfsync no 自己不主动持久化(被动:由操作系统解决)

1.4.5Redis中如何选择持久化方式

如果允许数据少量丢失,就选择RDB模式,如果不允许数据丢失,就选择AOF模式.

如果误操作将Reids服务器执行了flushAll命令,如何解决?
解决方法:
修改aof文件中的命令,删除flushall之后重启redis即可

1.5 Redis的内存优化策略

1.5.1修改Redis的内存

在这里插入图片描述

修改内存大小:
在这里插入图片描述

1.5.2应用场景

Redis运行的空间是内存,内存资源比较紧缺,所以应该维护Redis内存数据,应该让Redis保留热点的数据.

1.5.3LRU算法

LRU是Least Recently Used的缩写,即最近最少使用,是一种常用的页面置换算法,选择最近最久未使用的页面予以淘汰。该算法赋予每个页面一个访问字段,用来记录一个页面自上次被访问以来所经历的时间 t,当须淘汰一个页面时,选择现有页面中其 t 值最大的,即最近最少使用的页面予以淘汰。

1.5.4LFU算法

LFU(least frequently used (LFU) page-replacement algorithm)。即最不经常使用页置换算法,要求在页置换时置换引用计数最小的页,因为经常使用的页应该有一个较大的引用次数。但是有些页在开始时使用次数很多,但以后就不再使用,这类页将会长时间留在内存中,因此可以将引用计数寄存器定时右移一位,形成指数衰减的平均使用次数。
least frequently used (LFU) page-replacement algorithm
即最不经常使用页置换算法,要求在页置换时置换引用计数最小的页,因为经常使用的页应该有一个较大的引用次数。但是有些页在开始时使用次数很多,但以后就不再使用,这类页将会长时间留在内存中,因此可以将引用计数寄存器定时右移一位,形成指数衰减的平均使用次数。

1.5.5内存策略优化

1.volatile-lru 在设定了超时时间的数据, 采用lru算法进行删除.
2.allkeys-lru 所有数据采用lru算法
3.volatile-lfu 在设定了超时时间的数据, 采用LFU算法进行删除.
4.allkeys-lfu 所有数据采用LFU算法
5.volatile-random 设定超时时间数据采用随机算法
6.allkeys-random 所有数据采用随机算法
7.volatile-ttl 设定了超时时间的数据 根据ttl规则删除. 将剩余时间少的提前删除
8.noeviction 内存满了 不做任何操作.报错返回
在这里插入图片描述
.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值