| | |
| | | this.redisTemplate = redisTemplate; |
| | | } |
| | | |
| | | /** 读取模拟器主状态,不存在时原子写入默认拓扑;并发初始化时以 Redis 中先写入的那份为准。 */ |
| | | @Override |
| | | public SimulatorState loadOrInitialize(SimulatorState defaultState) |
| | | { |
| | |
| | | return restoreState(stored); |
| | | } |
| | | |
| | | /** 整体覆盖模拟器主状态;该键不设普通 TTL。 */ |
| | | @Override |
| | | public void save(SimulatorState state) |
| | | { |
| | | redisTemplate.opsForValue().set(STATE_KEY, JSON.toJSONString(state)); |
| | | } |
| | | |
| | | /** 读取短期保留的最近请求;键不存在时返回空列表。 */ |
| | | @Override |
| | | public List<RecentRequest> loadRecentRequests() |
| | | { |
| | |
| | | return List.copyOf(JSON.parseArray(stored.toString(), RecentRequest.class)); |
| | | } |
| | | |
| | | /** 覆盖保存最近请求,整键按小时级 TTL 自动过期。 */ |
| | | @Override |
| | | public void saveRecentRequests(List<RecentRequest> requests) |
| | | { |
| | |
| | | RECENT_REQUESTS_TTL_HOURS, TimeUnit.HOURS); |
| | | } |
| | | |
| | | /** 人工重置:删除最近请求并写回默认主状态。 */ |
| | | @Override |
| | | public void reset(SimulatorState defaultState) |
| | | { |