旁路缓存,redis如何工作的

缓存的特征

首先,一个系统不同层的访问速度不一样,我们才需要缓存。

这样就可以把一些需要频繁访问的数据放在缓存中,以加快它们的访问速度。例如:

img

计算机系统中,默认有两种缓存:

CPU 里面的末级缓存,即 LLC,用来缓存内存中的数据,避免每次从内存中存取数据;内

存中的高速页缓存,即 page cache,用来缓存磁盘中的数据,避免每次从磁盘中存取数据。

缓存两大特征:

在一个层次化的系统中,缓存一定是一个快速子系统,数据存在缓存中时,能避免每次从慢速子系统中存取数据。

缓存系统的容量大小总是小于后端慢速系统的,我们不可能把所有数据都放在缓存系统中。

redis缓存处理请求的方式

缓存命中:

Redis 中有相应数据,就直接读取 Redis,性能非常快。

缓存缺失:

Redis 中没有保存相应数据,就从后端数据库中读取数据,性能就会变慢。而且,一旦发生缓存缺失,为了让后续请求能从缓存中读取到数据,我们需要把缺失的数据写入 Redis,这个过程叫作缓存更新。

img

redis缓存类型
只读缓存

当redis用作只读缓存时,读请求会先在缓存中查看数据是否存在。而写请求则全部交给数据库,在数据库中增删改,对于删除的数据来说,如果redis已经缓存了相应的数据,应用需要把这些缓存的数据删除,redis中就没有这些数据了。

只读缓存好处是,保证了最新的数据在数据库里面,数据库有可靠性保障,数据更安全。

读写缓存

对于读写缓存来说,除了读请求会发送到缓存进行处理(直接在缓存中查询数据是否存在),所有的写请求也会发送到缓存,在缓存中直接对数据进行增删改操作。

但是,和只读缓存不一样的是,在使用读写缓存时,最新的数据是在 Redis 中,而 Redis 是内存数据库,一旦出现掉电或宕机,内存中的数据就会丢失。这也就是说,应用的最新数据可能会丢失,给应用业务带来风险。

因此它提供了两个策略

  1. 同步直写,写请求发给缓存的同时,也会发给后端数据库进行处理,等到缓存和数据库都写完数据,才给客户端返回。

  2. 异步写回,所有写请求都先在缓存中处理。等到这些增改的数据要被从缓存中淘汰出来时,缓存将它们写回后端数据库。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值