redis缓存

redis 作为缓存

redis的缓存机制和结构

在这里插入图片描述

  1. redis在从mysql中读取数据作为缓存的时候,如果不即使清除的话,那么会慢慢的占用很多空间,导致redis的性能降低,为了解决这个问题,我们通常会设置缓存数据的有效期,有效期过后,redis将会删除这些缓存数据。

  2. 在活动,比如618的时候,会有大量的数据比如上亿的数据需要缓存在redis中,但是你不可能给这几亿的数据完全放在redis中,因为28定律的存在,通常大量的数据中,只有几乎20%的数据才会被访问,所以,一般来说是只会缓存这20%的数据,另外,活动应该是额外的指定商品的,而且数据一般也不是那么大。

redis 缓存击穿(redis不存在+mysql存在)

由于大量的缓存失效(比如秒杀活动,大量数据的有效性同时失效),到时request直接到mysql中,导致mysql崩溃,导致mysql击穿。

为了解决这个 问题,我们需要设置的有效性计算方式为expired = fix(固定)+ random(12个小时) 来逐渐的删除缓存数据,避免大量同时失效,同时的大量缓存也会降低redis的性能

redis 缓存穿透

redis 不存在,mysql也不存在,那么如果request请求量大的话,那么因为mysql中没有,redis中无法缓存,所以,请求会每次都到mysql中读取,那么,导致了缓存完全失效,请求经过了多个节点,服务器->redis->mysql。

解决方案就是在服务器中,设置了返回null的时候,要求client做特殊处理,或者在redis中允许缓存empty值。

redis 缓存雪崩

如果有效期设置的不好的,几乎存在大量的数据同时失效,导致redis几乎不存在,或者redis宕机了,而且没有持久化的话,那么重启后,大量数据缓存失效,导致mysql在高并发的情形下,系统崩溃了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值