package com.qmth.boot.core.cache.service;

import javax.validation.constraints.NotNull;
import java.util.Collection;

/**
 * 编程式缓存操作服务接口
 */
public interface CacheService {

    /**
     * 获取所有缓存标识
     *
     * @return
     */
    Collection<String> endpoints();

    /**
     * 按缓存标识和key读取缓存值
     *
     * @param endpoint
     * @param key
     * @return
     */
    Object get(@NotNull String endpoint, @NotNull String key);

    /**
     * 按标识写入缓存
     *
     * @param endpoint
     * @param key
     * @param value
     */
    void put(@NotNull String endpoint, @NotNull String key, Object value);

    /**
     * 按标识和key强制失效
     *
     * @param endpoint
     * @param key
     */
    void evict(@NotNull String endpoint, @NotNull String key);

    /**
     * 按标识清空所有缓存值
     *
     * @param endpoint
     */
    void clear(@NotNull String endpoint);
}
