package com.CUST.brain.common.annotation;

import com.CUST.brain.common.enums.CacheUpdateStrategy;
import java.lang.annotation.*;

/**
 * Redis缓存注解
 */
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface RedisCache {
    /**
     * 缓存key前缀
     */
    String prefix() default "";

    /**
     * 缓存key
     */
    String key() default "";

    /**
     * 缓存字段（用于Hash结构）
     */
    String field() default "";

    /**
     * 过期时间（秒）
     */
    int expire() default 3600;

    /**
     * 是否使用Hash结构存储
     */
    boolean isHash() default false;

    /**
     * 是否缓存null值
     */
    boolean cacheNull() default false;

    /**
     * 缓存条件（SpEL表达式）
     */
    String condition() default "";

    /**
     * 不缓存条件（SpEL表达式）
     */
    String unless() default "";

    /**
     * 缓存更新策略
     */
    CacheUpdateStrategy updateStrategy() default CacheUpdateStrategy.UPDATE;

    /**
     * 是否自动续期
     */
    boolean autoRenew() default false;
} 