在项目中应用Redis

在项目中应用Redis

Redis是用于处理“缓存”的,当客户端尝试查询某些数据时,服务器端的处理流程大致是:

  • 优先从Redis中获取数据
  • 如果Redis中没有所需的数据,则从数据库中查询,并将查询结果存入到Redis
  • 将Redis中的数据(或:刚刚从数据库中查询出来的数据)响应到客户端
    使用Redis后,可以明显的提高查询效率(当数据表中的数据量大时,效果明显),同时,还能减轻数据库服务器的压力。
    在使用之前,还应该确定需要将哪些数据使用Redis处理查询,通常,应该是查询频率可能较高的、允许数据不够准确的(即使数据有一些不准确,但是对整个项目没有严重后果的),甚至这些数据极少改变的。
    在具体使用时,可以直接使用RedisTemplate去操作Redis,也可以对RedisTemplate的使用进行再次封装。

关于缓存预热

缓存预热:启动项目时,就将缓存数据加载到Redis中。
在Spring Boot项目中,当需要实现“启动项目时直接执行”的效果,需要自定义组件类,实现ApplicationRunner接口,重写其中的run()方法,此run()将在项目启动成功后自动执行。

提示:缓存预热的操作应该通过ApplicationRunner来实现,这样才可以保证在所有组件都已经正确的创建后再执行缓存预热,如果通过某些组件的构造方法来编写缓存预热的代码,此时某些组件可能还没有创建,则无法正确执行。

关于缓存预热的具体实现:

  • 删除所有相关的缓存数据
  • 删除列表数据:如果不删除,再次向缓存中写入列表,将是在原列表的基础上追加,则会产生重复的列表项
  • 删除数据项(每一个数据):如果不删除,则会导致原本已经缓存的数据一直存在,某些数据可能在数据库中已经删除,则缓存中的数据也应该被删除
  • 从数据库中查询列表,并写入到缓存
  • 基于查询到的列表,遍历,得到每个数据的id,再从数据库中查出各数据,并写入到缓存

关于更新缓存

更新缓存的策略有多种,通常使用的可以是:

  • 手动更新
  • 适用于数据变化频率非常低的应用场景,这些数据的缓存可以是长期存在,偶尔需要更新时,手动更新即可
  • 自动更新
  • 适用于数据频繁的变化,通过手动更新不太现实,将会是每间隔一段时间,或在特定的某个时间(例如每周一凌晨3点)自动更新
    关于自动更新,需要使用到“计划任务”。
    使用计划任务,需要自定义组件类,然后,在类中自定义方法(应该是public权限,返回值类型声明为void,参数列表为空),这个方法将作为计划任务执行的方法,在此方法上需要添加@Scheduled注解,并配置其执行频率或特定的执行时间,最后,还需要在配置类上使用@EnableScheduling注解,以开启当前项目的计划任务。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值