添加缓存的相关策略以及缓存的主动更新

目录

添加缓存

代码实现

主动更新缓存

 先删缓存在操作数据库

数据一致

 数据不一致

先操作数据库在删除缓存

 数据一致

数据不一致

总结


添加缓存

代码实现

public Shop queryWithPassThtough(Long id){
//先从redis中查询缓存
String object = stringRedisTemplate.opsForValue().get(CACHE_SHOP_KEY + id);
//如果有直接返回
if(object != null){
    //转成Java对象
    Shop bean = JSONUtil.toBean(object, Shop.class);
    return bean;
}
//如果没有,查询数据库
Shop shop = this.getById(id);
//如果数据库中没有,报错
if (shop == null){
    return Result.fail("没有该店铺");
    return null;
}
//如果有,写入redis
stringRedisTemplate.opsForValue().set(CACHE_SHOP_KEY + id,JSONUtil.toJsonStr(shop),30, TimeUnit.MINUTES);
return shop;


}

主动更新缓存

 先删缓存在操作数据库

数据一致

 假设线程A先删除缓存然后操作数据库,此时线程B来查询缓存没有命中,然后从数据库查询到数据后写入缓存此时缓存与数据库数据一致

 数据不一致

假设A线程先删除缓存,此时线程B来查询缓存未命中,就会查询数据库(旧数据)并写入缓存,此时数据库与缓存的数据不一致

先操作数据库在删除缓存

 数据一致

数据不一致

总结

不论是先删除缓存还是先操作数据库,都要确保更新数据库的操作在查询缓存之前,这样才能保证数据一致

  • 7
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Apollo可以通过灰度发布和配置中心的技术,实现应用程序的热更新。具体来说,Apollo在应用程序中集成了客户端SDK,通过该SDK可以将配置从Apollo的配置中心拉取到应用程序中,并在应用程序中生效。应用程序可以选择在运行时或重启时生效配置更新。灰度发布则可以控制配置变更的范围和速度,从而避免应用程序出现不可预期的问题。这些技术共同作用,可以使应用程序达到热更新的效果。 ### 回答2: Apollo是携程框架部门开发的一套分布式配置中心,它可以帮助开发团队实现应用程序的热更新。在Apollo中,热更新主要通过以下几个步骤实现: 1. 配置发布与更新:Apollo通过提供Web界面给开发者一个可视化的配置管理平台,开发者可以在平台上创建、修改和发布配置文件。当配置文件发生改变时,Apollo会自动推送到应用程序所在的环境中。 2. 配置加载与更新:应用程序在启动时会从Apollo配置中心加载配置文件,并在本地进行缓存。Apollo客户端会定时向配置中心发起请求,检查是否有配置文件更新。当有新的配置文件发布时,Apollo会将更新的配置文件推送到应用程序,应用程序会根据推送的更新进行相应的热更新操作。 3. 配置变更通知:Apollo支持实时通知配置变更。开发者可以使用Apollo提供的API在应用程序中监听配置文件的变更事件,并进行相应的处理。当配置文件发生改变时,Apollo会向应用程序发送通知,应用程序根据通知内容进行热更新操作。 4. 配置灰度发布:Apollo提供了灰度发布功能,开发者可以将新的配置文件在一部分机器或用户中进行灰度发布。开发者可以设定灰度规则,例如按照机器IP、用户ID等条件来限制灰度发布的范围。这样开发团队可以在保证部分用户或机器正常运行的前提下,进行热更新测试。 总之,Apollo实现热更新的基本原理是通过配置管理平台实现配置文件的发布与更新,并通过客户端定时轮询或配置变更通知等方式,在应用程序中实现热更新功能。这样,开发者可以在不停止应用程序的情况下,对配置文件进行实时更新和灰度发布,提高了应用程序的灵活性和稳定性。 ### 回答3: Apollo是一款开源的分布式配置中心,它可以实现热更新。Apollo的热更新主要基于以下几个方面的实现: 首先,Apollo提供了一个可视化的配置管理界面,使得开发人员可以方便地对配置进行管理和修改。通过这个界面,开发人员可以修改配置的值,添加新的配置项,删除不需要的配置项等操作。这些配置的修改会立即生效,并自动通知到使用这些配置的应用程序。 其次,Apollo使用了推拉模式的配置更新策略。具体来说,当配置发生变化时,Apollo会将这些变化推送给应用程序,使得应用程序可以即时获取最新的配置。同时,Apollo还支持应用程序主动去轮询配置中心,以获取最新的配置。这种推拉结合的方式,保证了配置的即时更新和高效传输。 再次,Apollo还提供了灰度发布和版本管理的功能,使得热更新更加灵活和可控。灰度发布可以让我们将配置的更新只发布给部分用户,从而验证配置的正确性和稳定性;而版本管理可以让我们在配置发生问题时,可以回滚到之前的版本,确保系统的稳定运行。 最后,Apollo还提供了权限控制和变更记录的功能,增强了配置的安全性和可追溯性。权限控制可以限制配置的修改和查看权限,防止未授权的修改;而变更记录可以记录配置的变更时间、修改人员等信息,方便进行配置追踪和故障定位。 综上所述,Apollo是通过可视化配置管理界面、推拉更新策略、灰度发布和版本管理、权限控制和变更记录等多个功能的综合应用来实现热更新的。这些功能使得配置的修改、发布和更新变得更加方便、及时和可控。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值