mongodb --> Redis 数据的初始化
Redis完整的缓存操作 分为三个步骤
// 1. 缓存数据初始化(预热) :将数据库中的数据加载到缓存中
// 2. 缓存的业务操作 :
// 3. 缓存数据的持久化(将缓存中的数据同步到数据库)
思考 ???
1. 需要将那些数据进行初始化处理
//1.需要频繁变动(DML)的数据 ,需要初始化缓存(频繁操作数据库的操作)
//不需要频繁变动[DQL]的数据,需要初始化的缓存
此处初始化 : 1.攻略的统计对象(vo) 2.用户攻略收藏id列表[拓展]
2. 初始化处理逻辑应该放置那个项目实现
// trip-mgrsite 跟 trip-website-api 的选择 ?????
api项目后续可能需要进行拓展 ,比如分布式微服务或者集群操作 , 如果将初始化逻辑放置api , 会存在多次初始化操作 ,不建议 ,另外一个点,redis缓存数据初始化数据管理范畴 ,建议放置mgrsite
3. 初始化, 处理逻辑应该放置在那个组件中实现(filter servelt interceptor controller listen)
分析需求实现特点:
//分析初始化次数尽可能少
//尽量保证业务操作之前
web组件 : listener : 可以监听请求对象(request) ,会话对象(session) , 容器对象(contain)的创建与销毁动作
//初始化逻辑强调尽可能在项目启动(web容器)之后,用户访问前执行,此时发现listener这个组件跟处理逻辑特点相符合
//web组件监听器 : web组件 监听tomcat的web容器
//spring容器监听器 : springmvc中的组件,监听的spring容器 (推荐)
Spring提供了一下五种标准的事件
代码实现 如 :
package cn.wolfcode.wolf2w.job;
import cn.wolfcode.wolf2w.domain.Strategy;
import cn.wolfcode.wolf2w.redis.service.IStrategyRedisService;
import cn.wolfcode.wolf2w.redis.vo.StrategyStatisVO;
import cn.wolfcode.wolf2w.service.IStrategyService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.util.List;
//@Component
public class RedisDatePersistenceJob {
@Autowired
private IStrategyRedisService strategyRedisService;
@Autowired
private IStrategyService strategyService ;
//cron表达式 任务计划
@Scheduled(cron = "0/5 *