REDIS的理解

什么是REDIS

redis是一个高性能的key-value数据库
支持数据持久化,可以将数据保存在磁盘中,下次重启时加载数据
list set zset hash 等数据结构的存储
支持数据的备份 master-save模式

用途

1.全页面缓存 减少全页面的加载时间
2 .顺序排列 set数据结构可以快速排序
3.会话存储 可以保留数据,在缓存停止的情况下,重新启动了数据任然还在
4.队列

持久化

RDB :把当前所有数据存在硬盘上,可以手动触发也可自动
优点 : RDB文件是二进制压缩文件,所以恢复速度快,适合全量恢复,灾难恢复
缺点 :消耗性能,无法做到实时持久化,还有版本兼容问题

AOF :记录每次对数据的操作到硬盘上
原理:每次对数据的操作,记录在日志上,(AOF)文件,要恢复数据,
重新执行AOF文件就行了

当新数据进入时内存不足

逐出算法:
如果内存不足,就要临时删除一些数据,清理数据的 算法称为逐出算法,逐出算法反复执行,
在这里插入图片描述
删除策略比对
1.定时删除 节约内存,消耗性能 占用cpu
2.惰性删除 延时执行 cpu利用率高,内存占用严重
3.定期删除 定期随机清理,每秒花费固定的cpu资源,随机抽查

企业级解决方案

. 缓存预热

服务器启动后迅速宕机。

1.1 问题排查
请求数量较高。
主从之间数据吞吐量较大,数据同步操作频率较高。
1.2 解决方案
前期工作:

日常统计数据访问记录,统计热点数据。
利用LRU数据删除策略,构建数据留存队列。
准备工作:

将统计的结果,根据级别,Redis优先加载级别较高的热点数据。
利用分布式多服务器同时进行数据读取,提高数据加载速度。
实施:

使用脚本固定触发数据预热过程。
如果条件允许,使用CDN。
1.3 总结
缓存预热就是系统启动前提前将相关的缓存数据直接加载到缓存系统,避免用户在请求时先查询数据库,然后再将数据缓存的问题。用户直接查询事先被预热的数据。

缓存雪崩

2.1 问题排查
在一个较短的时间内,缓存中较多的key集中过期。
在此期间访问过期的数据,Redis未命中,Redis向数据库请求数据。
数据库无法处理大量的请求。
Redis请求被积压,Redis超时。
数据库流量过大,崩溃。
重启数据库后缓存中依然没数据。
Redis服务器资源被占用,崩溃。
Redis集群瓦解。
应用服务器无法得到数据,客户端请求越来越多,应用服务器崩溃。
全部服务器重启,效果依然不理想。
2.2 解决方案1
平时的设计

更多的页面静态化处理。
构建多级缓存。
NGINX
Redis
ehcache
优化MySQL耗时的业务。
容易超时的查询
耗时较高的事务
灾难预警机制。
监控Redis服务器性能指标
CPU
内存
平均响应时间
Redis线程数
限流、降级。
短时间牺牲一些客户体验,限制一部分请求访问,降低应用服务器压力。
2.3 解决方案2
问题真来到时的解决方案

LRU与LFU切换。(将访问量高的数据保存下来)
数据有效期策略调整。
根据业务数据有效期进行分类错峰,A类90分钟,B类80分钟,C类70分钟。
过期时间使用固定时间+随机值的形式,稀释集中到期的key的数量。
超热数据使用永久key。
定期维护(自动+人工)
对即将过期的数据做访问量分析,确认是否进行延时。配合访问量统计,做热点数据的延时。
加锁
慎用!
2.4 总结
缓存雪崩就是瞬间过期数据量太大,导致对数据库服务器造成压力。如果能够有效避免过期时间集中,可以有效地解决雪崩现象。

缓存击穿

3.1 问题描述
系统平稳运行
数据库连接量激增
Redis无大量key过期
Redis内存平稳
Redis CPU正常
数据库崩溃
3.2 问题排查
Redis中某个访问量巨大的key过期。
多个数据请求从服务器请求Redis均未命中。
Redis短时间内发起了对数据库中同一数据的大量访问。
3.3 分析
单个可以高热。
key过期。
3.4 解决方案
预先设定
以电商为例,指定主打商品,增加这类信息的过期时间。
现场调整
监控访问量,对流量激增的数据增加过期时间,或者设置为永久key。
后台刷新数据
启动定时数据,高峰期来之前,刷新数据有效期。
二级缓存
设置不同的失效时间,保证不会被同时淘汰。
加锁
慎用,分布式锁,防止被击穿。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值