shikeying
2024-01-11 3b67e947e36133e2a40eb2737b15ea375e157ea0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
package com.walker.cache;
 
import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean;
 
import java.util.Collection;
import java.util.List;
import java.util.Map;
 
/**
 * 缓存对象提供者
 * @author shikeying
 *
 * @param <T>
 */
public interface CacheProvider<T> extends InitializingBean, DisposableBean {
 
    /**
     * 返回缓存对象
     * @return
     */
    Cache getCache();
 
    /**
     * 返回缓存提供者的名字
     * @return
     */
    String getProviderName();
 
    /**
     * 得到提供者泛型类型
     * @return
     */
    Class<?> getProviderType();
 
    /**
     * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     * 因为Cache接口不支持泛型,所以在<code>CacheProvider</code>
     * 中加入了泛型方法,这些是直接访问缓存数据的方法,这可能有些</br>
     * 不太合适,因为提供者只需要提供缓存对象就可以了,暂时先不增加</br>
     * 新接口,直接在此扩充内容,随着演化,这个接口需要调整。
     * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     */
 
    /**
     * 获得一个缓存数据
     * @param key
     * @return
     */
    T getCacheData(String key);
 
    @Deprecated
    long getCacheCount();
 
    void removeCacheData(String key);
 
    void updateCacheData(String key, T data);
 
    void putCacheData(String key, T data);
 
    /**
     * 缓存提供者提供有时间期限的数据存储。
     * @param key
     * @param data
     * @param expiredSeconds 过期秒数
     * @date 2022-11-06
     */
    void putCacheData(String key, T data, long expiredSeconds);
 
    /**
     * 重新加载缓存数据,该操作需要谨慎处理。
     * <p>1.对于持久化 Redis 来说,重新加载意味着已有缓存磁盘数据,会全部被清空。至于会不会重新立即从数据库加载,需要看每个定义的需要。</p>
     * @throws Exception
     */
    void reload() throws Exception;
 
    void setLoadPage(boolean loadPage);
 
    boolean isLoadPage();
 
    void setPageSize(int pageSize);
 
    long getCreateTime();
 
    /**
     * redis缓存需要传入更多参数
     * @return
     */
    Map<String, String> getCacheParam();
 
    Collection<Object> queryListLimit(int maxSize);
 
    long size();
 
    /**
     * 存储写入集合缓存
     * @param key 唯一ID
     * @param data 数据集合
     * @param expiredSeconds 失效时间(秒)
     * @date 2023-06-13
     */
    void putCacheList(String key, List<T> data, long expiredSeconds);
 
    /**
     * 存储写入集合缓存
     * @param key
     * @param data
     * @date 2023-06-13
     */
    void putCacheList(String key, List<T> data);
 
    /**
     * 向给定集合追加数据。
     * @param key
     * @param data
     * @date 2023-06-13
     */
    void putCacheListAppend(String key, T data);
 
    /**
     * 获取缓存的集合
     * @param key 唯一ID
     * @return
     * @date 2023-06-13
     */
    List<T> getCacheList(String key);
 
    /**
     * 删除给定key集合中的data数据,该方法只能删除集合中一个元素(值等于data)
     * @param key
     * @param data
     * @date 2023-06-13
     */
    void removeCacheList(String key, T data);
 
    /**
     * 删除给定key中,整个集合数据。
     * @param key
     * @date 2023-08-03
     */
    void removeCacheList(String key);
}