Redis学习笔记——缓存更新策略
发布时间:2022-09-30 12:46:02 所属栏目:MySql教程 来源:
导读: 一,缓存
●缓存就是数据交换的缓冲区,是存储数据的临时地方,一般读写性能较高
●应用层缓存
将数据库的部分数据放在缓存中,当请求到达应用层直接查询缓存
可以降低对数据库
●缓存就是数据交换的缓冲区,是存储数据的临时地方,一般读写性能较高
●应用层缓存
将数据库的部分数据放在缓存中,当请求到达应用层直接查询缓存
可以降低对数据库
|
一,缓存 ●缓存就是数据交换的缓冲区,是存储数据的临时地方,一般读写性能较高 ●应用层缓存 将数据库的部分数据放在缓存中,当请求到达应用层直接查询缓存 可以降低对数据库的访问数据库更新操作,提高性能。于是可以使用Redis作为缓存。 二,缓存更新策略 1、内存淘汰:不用自己维护,利用Redis的内存淘汰机制,当内存不足时自动淘汰部分数据。下次查询时更新缓存。 2、超时剔除:给缓存数据添加TTL时间,到期后自动删除缓存。下次查询时更新缓存。 3、主动更新:编写业务逻辑,在修改数据库的同时,更新缓存。 所以我们可以采取当一致性要求不高时可以用内存淘汰机制+超时剔除,一致性要求很高时使用主动更新+超时剔除 三,主动更新策略 内存淘汰与超时剔除很容易实现,主要看看主动更新策略。 1、主动更新策略也有几个不同的方案: ●由缓存的调用者更新数据库的同时更新缓存(需要编码) ●将缓存与数据库整合为一个服务,由服务来维护一致性。调用者调用该服务,无需关心缓存一致性问题。(维护困难) ●调用者只操作缓存,由其它线程异步的将缓存数据持久化到数据库。保证最终一致。(容易丢失数据) 2、另外,选择更新后缓存是更新还是删除也会产生不同的效果 更新缓存:每次更新数据库都更新缓存,无效写操作较多 删除缓存:更新数据库时让缓存失效,查询时再更新缓存 最后附上更新的代码 @Override @Transactional public Result updateShop(Shop shop) { if(shop.getId() == null){ return Result.fail("商铺id不能为空!"); } updateById(shop); stringRedisTemplate.delete("shop:detail:"+shop.getId()); return Result.ok(); } (编辑:百科站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐


