Description or Example
# 知识说明
## 投机取巧
> 如果重新找到对应的关联关系, 然后再找到对应的对象, 然后删除哈希里面的值, 关联关系, 随机码等, 太麻烦了, 所以. 我做了如下的偷鸡
> 1. **给随机码和关联关系加上过期时间, 让他自动删除, 非常的完美**
> 2. **在商品上架之前, 先将hash删除, 之前我们已经预言过了一个场景, 即有关联关系, 却没有哈希关系, 因此, 这里删了, 上架还是会将近三天的补齐的, 没有任何问题**
> **但是, 这可能会导致生成新的随机码和信号量, 之前的就没用了, 不过也没关系, 它会自动过期的, 最终也会被释放, 好过永远都不释放**
```java
@Scheduled(cron = "0 0 0 * * ?") // 每天的凌晨00:00:00把对应的哈希删除
@Async
public void downHash() {
redisTemplate.delete(SecKillConstant.SEC_KILL_SKU_MAP_SKU_INFO);
}
```
```java
/**
* 设置过期时间
* @param key
* @param endTime
* @param startTime
*/
private void initExpire(String key, long endTime, long startTime) {
redisTemplate.expire(key, endTime - startTime, TimeUnit.MILLISECONDS);
}
```