package com.qxueyou.scc.base.service; import java.util.Collection; import java.util.List; import java.util.Map; import java.util.concurrent.TimeUnit; /** * 缓存服务接口 * * @author 德虎 * */ public interface ICacheService { /** * 根据key值获取指定类型对象 * * @param key * 对象key值 * @param cls * 对象类型 * @return */ T get(String key, Class cls); /** * 根据key值获取指定类型对象 * * @param key * 对象key值 * @return */ T get(String key); Long getIncrValue(String key); Long incr(String key); Long decr(String key); /** * 根据key值获取指定类型对象 * * @param keys * @return */ Map getBulk(String... keys); /** * 将对象缓存到缓存池 * * @param key * 对象key值 * @param expiredTime * 超时时间,单位秒 * @param obj * 要缓存的对象 * @return */ void set(String key, int expiredTime, Object obj); /** * 将对象缓存到缓存池,永不过期 * * @param key * 对象key值 * @param obj * 要缓存的对象 * @return */ void set(String key, Object obj); /** * 将对象缓存到缓存池 * * @param key * cache名称 * @param hashKey * 键值 * @param obj * 要缓存的对象 * @return */ void set(String key, String hashKey, Object obj); /** * 将对象缓存到缓存池 * * @param key * 对象key值 * @param expiredTime * 超时时间,单位秒 * @param obj * 要缓存的对象 * @return */ boolean add(String key, int expiredTime, Object obj); /** * 将对象从缓存池删除 * * @param key * 对象key值 * @return */ void delete(String key); /** * 追加缓存池的值 * * @param key * 对象key值 * @return */ void append(String key, String value); /** * 获取list缓存中key所有value值 */ List lstAll(String key); /** * 向list缓存中放入值 */ void lstRightPush(String key, Object value); /** * 向list缓存中放入值 */ void lstRightPushAll(String key, Collection values); /** * 从列表获取指定范围内的数据 * * @param key * @param start * @param end * @return */ List lstRange(String key, long start, long end); void lstTrim(String key, long start, long end); void lstClear(String key); /** * 根据key,index删除list中的value */ void lstRemove(String key, Object value); /** * 通过key返回list中的值,并移除值 */ String lstLeftPop(String key); /** * 向hash缓存中存入对象 * * @param key * @param hashKey * @param value */ void putKeyForHash(Object key, Object hashKey, Object value); /** * 对key设置过其实键 * @param key * @param timeout * @param unit */ void expire(String key, long timeout, TimeUnit unit); /** * 如果不存在就添加 * @param key * @param obj * @return */ boolean setIfAbsent(String key, Object obj); }