001/**
002 * Copyright (c) 2015-2022, Michael Yang 杨福海 (fuhai999@gmail.com).
003 * <p>
004 * Licensed under the Apache License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 * <p>
008 * http://www.apache.org/licenses/LICENSE-2.0
009 * <p>
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016package io.jboot.components.cache;
017
018import com.jfinal.plugin.ehcache.IDataLoader;
019
020import java.util.List;
021
022
023public interface JbootCache extends com.jfinal.plugin.activerecord.cache.ICache {
024
025
026
027    //设置当前 线程 的缓存前缀
028    JbootCache setThreadCacheNamePrefix(String cacheNamePrefix);
029
030    //清除当前 线程 的缓存前缀
031    void clearThreadCacheNamePrefix();
032
033    //配置哪些缓存名称可以忽略线程前缀的影响
034    boolean addThreadCacheNamePrefixIngore(String cacheName);
035
036    default void addThreadCacheNamePrefixIngores(String... cacheNames) {
037        for (String cacheName : cacheNames) {
038            addThreadCacheNamePrefixIngore(cacheName);
039        }
040    }
041
042    //移除对 addThreadCacheNamePrefixIngore 的配置
043    boolean removeThreadCacheNamePrefixIngore(String cacheName);
044
045
046    JbootCacheConfig getConfig();
047
048    @Override
049    <T> T get(String cacheName, Object key);
050
051    @Override
052    void put(String cacheName, Object key, Object value);
053
054    void put(String cacheName, Object key, Object value, int liveSeconds);
055
056
057    @Override
058    void remove(String cacheName, Object key);
059
060    @Override
061    void removeAll(String cacheName);
062
063    <T> T get(String cacheName, Object key, IDataLoader dataLoader);
064
065    <T> T get(String cacheName, Object key, IDataLoader dataLoader, int liveSeconds);
066
067    Integer getTtl(String cacheName, Object key);
068
069    void setTtl(String cacheName, Object key, int seconds);
070
071    void refresh(String cacheName, Object key);
072
073    void refresh(String cacheName);
074
075
076    List getNames();
077
078    List getKeys(String cacheName);
079
080}