package com.docus.server.common.util;

import lombok.extern.slf4j.Slf4j;

/**
 * reidKey过期处理器
 *
 * @author wyb
 */
@Slf4j
public abstract class RedisKeyExpirationHandler {
    /**
     * 处理redis过期的key
     *
     * @param expireRedisKey 过期的 redis key
     */
    public void handle(String expireRedisKey) {
        try {
            businessHandle(expireRedisKey);
        } catch (Exception ex) {
            log.error("redis键："+expireRedisKey+" 过期,处理发生异常："+ex.getMessage(),ex);
            handleException(expireRedisKey);
        }
    }

    ;

    /**
     * 业务处理,异常调用异常方案
     *
     * @param expireRedisKey 过期的 redis key
     */
    public abstract void businessHandle(String expireRedisKey) throws Exception;

    /**
     * 处理如果发生异常的解决方案
     *
     * @param expireRedisKey 过期的 redis key
     */
    public abstract void handleException(String expireRedisKey);

}
