// Path: src/main/java/com/ace/cache/entity/CacheBean.java
// public class CacheBean {
//     private String key = "";
//     private String desc = "";
//     @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
//     private Date expireTime;
// 
//     public CacheBean(String key, String desc, Date expireTime) {
//         this.key = key;
//         this.desc = desc;
//         this.expireTime = expireTime;
//     }
// 
//     public CacheBean(String key, Date expireTime) {
//         this.key = key;
//         this.expireTime = expireTime;
//     }
// 
//     public CacheBean() {
// 
//     }
// 
//     public String getKey() {
//         return key;
//     }
// 
//     public void setKey(String key) {
//         this.key = key;
//     }
// 
//     public String getDesc() {
//         return desc;
//     }
// 
//     public void setDesc(String desc) {
//         this.desc = desc;
//     }
// 
//     public Date getExpireTime() {
//         return expireTime;
//     }
// 
//     public void setExpireTime(Date expireTime) {
//         this.expireTime = expireTime;
//     }
// 
// }


import java.util.List;
import com.ace.cache.entity.CacheBean;
package com.ace.cache.api;



/**
 * 缓存API
 * <p/>
 * 解决问题：
 *
 * @author Ace
 * @version 1.0
 * @date 2017年5月4日
 * @since 1.7
 */
public interface CacheAPI {
    /**
     * 传入key获取缓存json，需要用fastjson转换为对象
     *
     * @param key
     * @return
     * @author Ace
     * @date 2017年5月12日
     */
    public String get(String key);

    /**
     * 保存缓存
     *
     * @param key
     * @param value
     * @param expireMin
     * @author Ace
     * @date 2017年5月12日
     */
    public void set(String key, Object value, int expireMin);

    /**
     * 保存缓存
     *
     * @param key
     * @param value
     * @param expireMin
     * @param desc
     * @author Ace
     * @date 2017年5月12日
     */
    public void set(String key, Object value, int expireMin, String desc);

    /**
     * 移除单个缓存
     *
     * @param key
     * @return
     * @author Ace
     * @date 2017年5月12日
     */
    public Long remove(String key);

    /**
     * 移除多个缓存
     *
     * @param keys
     * @return
     * @author Ace
     * @date 2017年5月12日
     */
    public Long remove(String... keys);

    /**
     * 按前缀移除缓存
     *
     * @param pre
     * @return
     * @author Ace
     * @date 2017年5月12日
     */
    public Long removeByPre(String pre);

    /**
     * 通过前缀获取缓存信息
     *
     * @param pre
     * @return
     * @author Ace
     * @date 2017年5月12日
     */
// Path: src/main/java/com/ace/cache/entity/CacheBean.java
// public class CacheBean {
//     private String key = "";
//     private String desc = "";
//     @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
//     private Date expireTime;
// 
//     public CacheBean(String key, String desc, Date expireTime) {
//         this.key = key;
//         this.desc = desc;
//         this.expireTime = expireTime;
//     }
// 
//     public CacheBean(String key, Date expireTime) {
//         this.key = key;
//         this.expireTime = expireTime;
//     }
// 
//     public CacheBean() {
// 
//     }
// 
//     public String getKey() {
//         return key;
//     }
// 
//     public void setKey(String key) {
//         this.key = key;
//     }
// 
//     public String getDesc() {
//         return desc;
//     }
// 
//     public void setDesc(String desc) {
//         this.desc = desc;
//     }
// 
//     public Date getExpireTime() {
//         return expireTime;
//     }
// 
//     public void setExpireTime(Date expireTime) {
//         this.expireTime = expireTime;
//     }
// 
// }


// Path: src/main/java/com/ace/cache/api/CacheAPI.java
import java.util.List;
import com.ace.cache.entity.CacheBean;

package com.ace.cache.api;



/**
 * 缓存API
 * <p/>
 * 解决问题：
 *
 * @author Ace
 * @version 1.0
 * @date 2017年5月4日
 * @since 1.7
 */
public interface CacheAPI {
    /**
     * 传入key获取缓存json，需要用fastjson转换为对象
     *
     * @param key
     * @return
     * @author Ace
     * @date 2017年5月12日
     */
    public String get(String key);

    /**
     * 保存缓存
     *
     * @param key
     * @param value
     * @param expireMin
     * @author Ace
     * @date 2017年5月12日
     */
    public void set(String key, Object value, int expireMin);

    /**
     * 保存缓存
     *
     * @param key
     * @param value
     * @param expireMin
     * @param desc
     * @author Ace
     * @date 2017年5月12日
     */
    public void set(String key, Object value, int expireMin, String desc);

    /**
     * 移除单个缓存
     *
     * @param key
     * @return
     * @author Ace
     * @date 2017年5月12日
     */
    public Long remove(String key);

    /**
     * 移除多个缓存
     *
     * @param keys
     * @return
     * @author Ace
     * @date 2017年5月12日
     */
    public Long remove(String... keys);

    /**
     * 按前缀移除缓存
     *
     * @param pre
     * @return
     * @author Ace
     * @date 2017年5月12日
     */
    public Long removeByPre(String pre);

    /**
     * 通过前缀获取缓存信息
     *
     * @param pre
     * @return
     * @author Ace
     * @date 2017年5月12日
     */
    public List<CacheBean> getCacheBeanByPre(String pre);