使用Redis可以提高查询效率,一定程度上可以减轻数据库服务器的压力,从而保护了数据库。

通常,应用Redis的场景有:

  • 高频查询,例如:热搜列表、秒杀
  • 改变频率低的数据,例如:商品类别

一旦使用Redis,就会导致Redis和数据库中都存在同样的数据,当数据发生变化时,可能出现不一致的问题!

所以,还有某些数据在特定的场景中不能使用Redis:

  • 要求数据必须是准确的:下单购买时要求库存是准确的
    • 如果每次库存发生变化时都更新了Redis中的库存值,保证了Redis中的数据是准确的,也可以使用
  • 数据的修改频率很高,且对数据准确性有一定要求

需要学会评估是否要求数据一定保持一致!

要使用Redis缓存数据,至少需要:

  • 开发新的组件,实现对Redis中的数据访问
    • 此组件并不是必须的,因为访问Redis数据的API都非常简单,自定义组件时,组件中的每个方法可能也只有少量代码,甚至只有1行代码
    • 如果直接将访问Redis的代码写在Service中,首次开发时会更省事,但不利于维护
    • 【推荐】如果将访问Redis的代码写的新的组件中,首次开发时会更麻烦,但利于维护
  • 在Service中调用新的组件,在Service中决定何时访问MySQL,何时访问Redis

在使用Redis之前,还必须明确一些问题:

  • 哪些查询功能改为从Redis中获取数据
  • Redis中的数据从哪里来

暂定目标:

  • 根据类别的id查询类别详情,改为从Redis中获取数据
  • 优先从Redis中获取数据,如果Redis中没有,则从MySQL中获取,且获取到数据后,将数据存入到Redis中,所以,经过首次查询后,Redis中将存在此数据,后续每一次都可以直接从Redis中拿到必要的数据
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐