对于目前的我而言,使用redis的情况有以下两种
当我们更新数据库数据时,如何保证缓存与数据库的一致性呢?有redis项目经验的伙伴都知道,先更新数据库,再删除对应的key。等到下次用户读取数据时发现缓存中没有,再去数据库中查询数据并刷新缓存。
这样做的好处有两点,一是可以避免对缓存无效的写操作,二是可以最大程度的保证数据一致性,当然我们需要设置一个过期时间来兜底,虽然数据不一致性的概率很低
指的是恶意用户频繁访问不存在的数据,这样可以无视缓存,对数据库进行请求,增加服务器的压力。处理的方式有多种,我举几个例子
当缓存的key过期的时候,突然大量的请求访问该key,发现key不存在,便一起访问数据库,给数据库带来极大的压力。这种情况的解决思路很简单,就是当发现缓存中key不存在的时候,获取锁,只允许一个请求去访问数据库,访问完刷新缓存。到了这一步后,其他请求怎么办呢?有两个选择:
注意:逻辑过期的方法无法与缓存穿透的空字符方式合作,但互斥锁方式可以
在一开始学习redis的时候将缓存更新的步骤当成公式去用,结果发现在很多业务上用起来很麻烦很痛苦,最后慢慢才悟出来,所谓的公式(写:先操作数据库,再删key 读:先读缓存,缓存没有再从数据库找) 一般适用于redis做数据缓存的时候,而很多时候我们只是使用redis的特性用来解决业务问题,这种时候我们就应该根据实际情况灵活运用了,而不是套用公式
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- oldu.cn 版权所有 浙ICP备2024123271号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务