All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.yixan.tools.common.cache.ICacheService Maven / Gradle / Ivy

There is a newer version: 3.7.1
Show newest version
package com.yixan.tools.common.cache;

import java.util.List;
import java.util.Map;
import java.util.Set;

import com.yixan.tools.common.model.Duration;

/**
 * 缓存服务接口
 *
 * @author zhaohuihua
 * @version C01 2017年5月27日
 */
public interface ICacheService {

    /** 是否可持久化 **/
    default boolean storable() {
        return false;
    }

    /**
     * 保存对象
     *
     * @param key 关键字
     * @param value 值
     */
     void set(ICacheKeys.KeyValue key, T value);

    /**
     * 保存对象
     *
     * @param key 关键字
     * @param subkey 子关键字
     * @param value 值
     */
     void set(ICacheKeys.FieldValue key, String subkey, T value);

    /**
     * 保存列表
     *
     * @param key 关键字
     * @param value 值
     */
     void set(ICacheKeys.KeyList key, List value);

    /**
     * 保存列表
     *
     * @param key 关键字
     * @param subkey 子关键字
     * @param value 值
     */
     void set(ICacheKeys.FieldList key, String subkey, List value);

    /**
     * 保存对象
     *
     * @param key 关键字
     * @param value 值
     * @param expire 过期时间
     */
     void set(ICacheKeys.KeyValue key, T value, Duration expire);

    /**
     * 保存对象
     *
     * @param key 关键字
     * @param subkey 子关键字
     * @param value 值
     * @param expire 过期时间
     */
     void set(ICacheKeys.FieldValue key, String subkey, T value, Duration expire);

    /**
     * 保存列表
     *
     * @param key 关键字
     * @param value 值
     * @param expire 过期时间
     */
     void set(ICacheKeys.KeyList key, List value, Duration expire);

    /**
     * 保存列表
     *
     * @param key 关键字
     * @param subkey 子关键字
     * @param value 值
     * @param expire 过期时间
     */
     void set(ICacheKeys.FieldList key, String subkey, List value, Duration expire);

    /**
     * 从缓存中取出对象
     *
     * @param key 关键字
     * @return 缓存对象
     */
     T get(ICacheKeys.KeyValue key);

    /**
     * 从缓存中取出对象
     *
     * @param key 关键字
     * @param subkey 子关键字
     * @return 缓存对象
     */
     T get(ICacheKeys.FieldValue key, String subkey);

    /**
     * 从缓存中取出对象
     *
     * @param key 关键字
     * @return 缓存对象
     */
     List get(ICacheKeys.KeyList key);

    /**
     * 从缓存中取出对象
     *
     * @param key 关键字
     * @param subkey 子关键字
     * @return 缓存对象
     */
     List get(ICacheKeys.FieldList key, String subkey);

    /**
     * 判断缓存是否存在key
     *
     * @param key 关键字
     * @return 是否存在
     */
    boolean exist(ICacheKeys.KeyValue key);

    /**
     * 判断缓存是否存在key
     *
     * @param key 关键字
     * @return 是否存在
     */
    boolean exist(ICacheKeys.KeyList key);

    /**
     * 判断缓存是否存在key
     *
     * @param key 关键字
     * @param subkey 子关键字
     * @return 是否存在
     */
    boolean exist(ICacheKeys.FieldValue key, String subkey);

    /**
     * 判断缓存是否存在key
     *
     * @param key 关键字
     * @param subkey 子关键字
     * @return 是否存在
     */
    boolean exist(ICacheKeys.FieldList key, String subkey);

    /**
     * 删除缓存中的指定key的值
     *
     * @param key 关键字
     */
    void del(ICacheKeys.KeyValue key);

    /**
     * 删除缓存中的指定key的值
     *
     * @param key 关键字
     */
    void del(ICacheKeys.KeyList key);

    /**
     * 删除缓存中的指定key的值
     *
     * @param key 关键字
     * @param subkey 子关键字
     */
    void del(ICacheKeys.FieldValue key, String subkey);

    /**
     * 删除缓存中的指定key的值
     *
     * @param key 关键字
     * @param subkey 子关键字
     */
    void del(ICacheKeys.FieldList key, String subkey);

    /**
     * 设置过期时间
     *
     * @param key 关键字
     * @param time 过期时间
     */
    void expire(ICacheKeys.KeyValue key, Duration time);

    /**
     * 设置过期时间
     *
     * @param key 关键字
     * @param time 过期时间
     */
    void expire(ICacheKeys.KeyList key, Duration time);

    /**
     * 设置过期时间
     *
     * @param key 关键字
     * @param subkey 子关键字
     * @param time 过期时间
     */
    void expire(ICacheKeys.FieldValue key, String subkey, Duration time);

    /**
     * 设置过期时间
     *
     * @param key 关键字
     * @param subkey 子关键字
     * @param time 过期时间
     */
    void expire(ICacheKeys.FieldList key, String subkey, Duration time);

    /**
     * 移除过期时间
     *
     * @param key 关键字
     */
    void persist(ICacheKeys.KeyValue key);

    /**
     * 移除过期时间
     *
     * @param key 关键字
     */
    void persist(ICacheKeys.KeyList key);

    /**
     * 移除过期时间
     *
     * @param key 关键字
     * @param subkey 子关键字
     */
    void persist(ICacheKeys.FieldValue key, String subkey);

    /**
     * 移除过期时间
     *
     * @param key 关键字
     * @param subkey 子关键字
     */
    void persist(ICacheKeys.FieldList key, String subkey);

    /**
     * KEY是否存在
     *
     * @param key 关键字
     */
    boolean exist(String key);

    /**
     * KEY是否存在
     *
     * @param key 关键字
     * @param subkey 子关键字
     * @param field 字段
     */
    boolean exist(String key, String subkey);

    /**
     * 删除KEY
     *
     * @param key 关键字
     */
    void del(String key);

    /**
     * 删除KEY
     *
     * @param key 关键字
     * @param subkey 子关键字
     * @param field 字段
     */
    void del(String key, String subkey);

    /**
     * 设置过期时间
     *
     * @param key 关键字
     * @param time 过期时间
     */
    void expire(String key, Duration time);

    /**
     * 设置过期时间
     *
     * @param key 关键字
     * @param subkey 子关键字
     * @param time 过期时间
     */
    void expire(String key, String subkey, Duration time);

    /**
     * 移除过期时间
     *
     * @param key 关键字
     */
    void persist(String key);

    /**
     * 移除过期时间
     *
     * @param key 关键字
     * @param subkey 子关键字
     */
    void persist(String key, String subkey);

    /**
     * 保存哈希表指定字段值
     *
     * @param key 关键字
     * @param field 字段
     * @param value 值
     */
     void hset(String key, String field, T value);

    /**
     * 保存哈希表指定字段值
     *
     * @param key 关键字
     * @param subkey 子关键字
     * @param field 字段
     * @param value 值
     */
     void hset(String key, String subkey, String field, T value);

    /**
     * 从哈希表取出指定字段值
     *
     * @param key 关键字
     * @param field 字段
     * @param clazz 对象类型
     * @return 缓存对象
     */
     T hget(String key, String field, Class clazz);

    /**
     * 从哈希表取出指定字段值
     *
     * @param key 关键字
     * @param subkey 子关键字
     * @param field 字段
     * @param clazz 对象类型
     * @return 缓存对象
     */
     T hget(String key, String subkey, String field, Class clazz);

    /**
     * 从哈希表取出指定字段值
     *
     * @param key 关键字
     * @param field 字段
     * @param clazz 对象类型
     * @return 缓存对象
     */
     List hlist(String key, String field, Class clazz);

    /**
     * 从哈希表取出指定字段值
     *
     * @param key 关键字
     * @param subkey 子关键字
     * @param field 字段
     * @param clazz 对象类型
     * @return 缓存对象
     */
     List hlist(String key, String subkey, String field, Class clazz);

    /**
     * 判断哈希表是否存在field
     *
     * @param key 关键字
     * @param field 字段
     * @param clazz 对象类型
     * @return 是否存在
     */
    boolean hexist(String key, String field);

    /**
     * 判断哈希表是否存在field
     *
     * @param key 关键字
     * @param subkey 子关键字
     * @param field 字段
     * @param clazz 对象类型
     * @return 是否存在
     */
    boolean hexist(String key, String subkey, String field);

    /**
     * 删除整个哈希表
     *
     * @param key 关键字
     * @param subkey 子关键字
     * @param field 字段
     */
    void hdel(String key, String field);

    /**
     * 删除整个哈希表
     *
     * @param key 关键字
     * @param subkey 子关键字
     * @param field 字段
     */
    void hdel(String key, String subkey, String field);

    /**
     * 保存哈希表指定字段值
     *
     * @param key 关键字
     * @param map 同时设置多个字段
     */
     void hmset(String key, Map map);

    /**
     * 保存哈希表指定字段值
     *
     * @param key 关键字
     * @param subkey 子关键字
     * @param map 同时设置多个字段
     */
     void hmset(String key, String subkey, Map map);

    /**
     * 从哈希表取出指定字段值
     *
     * @param key 关键字
     * @param fields 同时获取多个字段, 如果不指定将获取全部字段
     * @return 字段KeValue, value=JSON字符串
     */
    Map hmget(String key, List fields);

    /**
     * 从哈希表取出指定字段值
     *
     * @param key 关键字
     * @param subkey 子关键字
     * @param fields 同时获取多个字段, 如果不指定将获取全部字段
     * @return 字段KeValue, value=JSON字符串
     */
    Map hmget(String key, String subkey, List fields);

    /**
     * 从哈希表取出指定字段值
     *
     * @param key 关键字
     * @param fields 同时获取多个字段, 如果不指定将获取全部字段
     * @param clazz 字段值类型
     * @return 字段KeValue
     */
     Map hmget(String key, List fields, Class clazz);

    /**
     * 从哈希表取出指定字段值
     *
     * @param key 关键字
     * @param subkey 子关键字
     * @param fields 同时获取多个字段, 如果不指定将获取全部字段
     * @param clazz 字段值类型
     * @return 字段KeValue
     */
     Map hmget(String key, String subkey, List fields, Class clazz);

    /**
     * 删除哈希表指定字段值
     *
     * @param key 关键字
     * @param field 字段
     * @param fields 同时删除多个字段
     * @return 成功删除的数量
     */
    long hmdel(String key, List fields);

    /**
     * 删除哈希表指定字段值
     *
     * @param key 关键字
     * @param subkey 子关键字
     * @param field 字段
     * @param fields 同时删除多个字段
     * @return 成功删除的数量
     */
    long hmdel(String key, String subkey, List fields);

    /**
     * 整个哈希表的value类型相同, 一次性全部取出来
     * 
     * @param key 关键字
     * @param clazz 对象类型
     * @return 全部KeyValue
     */
     Map haget(String key, Class clazz);

    /**
     * 整个哈希表的value类型相同, 一次性全部取出来
     * 
     * @param key 关键字
     * @param subkey 子关键字
     * @param clazz 对象类型
     * @return 全部KeyValue
     */
     Map haget(String key, String subkey, Class clazz);

    /**
     * 整个哈希表的value类型相同, 一次性全部取出来
     * 
     * @param key 关键字
     * @return 全部KeyValue, value=JSON字符串
     */
    Map haget(String key);

    /**
     * 整个哈希表的value类型相同, 一次性全部取出来
     * 
     * @param key 关键字
     * @param subkey 子关键字
     * @return 全部KeyValue, value=JSON字符串
     */
    Map haget(String key, String subkey);

    /**
     * 保存哈希表对象(将整个对象按字段分别存储到缓存中, 之后以hget/hset/hdel的方式分别对字段操作)
     *
     * @param key 关键字
     * @param value 值
     */
     void hoset(String key, T object);

    /**
     * 保存哈希表对象(将整个对象按字段分别存储到缓存中, 之后以hget/hset/hdel的方式分别对字段操作)
     *
     * @param key 关键字
     * @param subkey 子关键字
     * @param value 值
     */
     void hoset(String key, String subkey, T object);

    /**
     * 将整个哈希表还原为对象
     *
     * @param key 关键字
     * @param clazz 对象类型
     * @return Map还原后的对象
     */
     T hoget(String key, Class clazz);

    /**
     * 将整个哈希表还原为对象
     *
     * @param key 关键字
     * @param subkey 子关键字
     * @param clazz 对象类型
     * @return Map还原后的对象
     */
     T hoget(String key, String subkey, Class clazz);

    /**
     * 获取所有的KEY
     * 
     * @param key 关键字
     * @return KEY列表
     */
    Set hkeys(String key);

    /**
     * 获取所有的KEY
     * 
     * @param key 关键字
     * @param subkey 子关键字
     * @return KEY列表
     */
    Set hkeys(String key, String subkey);

    /**
     * 获取哈希表的field数量
     * 
     * @param key 关键字
     * @return 数量
     */
    int hlen(String key);

    /**
     * 获取哈希表的field数量
     * 
     * @param key 关键字
     * @param subkey 子关键字
     * @return 数量
     */
    int hlen(String key, String subkey);

    /**
     * 缓存服务设置接口
     *
     * @author zhaohuihua
     * @version V1.0 2017年5月27日
     */
    public static interface Aware {

        void setCacheService(ICacheService cache);
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy