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 */ public interface CacheProvider extends InitializingBean, DisposableBean { /** * 返回缓存对象 * @return */ Cache getCache(); /** * 返回缓存提供者的名字 * @return */ String getProviderName(); /** * 得到提供者泛型类型 * @return */ Class getProviderType(); /** * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * 因为Cache接口不支持泛型,所以在CacheProvider * 中加入了泛型方法,这些是直接访问缓存数据的方法,这可能有些
* 不太合适,因为提供者只需要提供缓存对象就可以了,暂时先不增加
* 新接口,直接在此扩充内容,随着演化,这个接口需要调整。 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ /** * 获得一个缓存数据 * @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); /** * 重新加载缓存数据,该操作需要谨慎处理。 *

1.对于持久化 Redis 来说,重新加载意味着已有缓存磁盘数据,会全部被清空。至于会不会重新立即从数据库加载,需要看每个定义的需要。

* @throws Exception */ void reload() throws Exception; void setLoadPage(boolean loadPage); boolean isLoadPage(); void setPageSize(int pageSize); long getCreateTime(); /** * redis缓存需要传入更多参数 * @return */ Map getCacheParam(); Collection queryListLimit(int maxSize); long size(); /** * 存储写入集合缓存 * @param key 唯一ID * @param data 数据集合 * @param expiredSeconds 失效时间(秒) * @date 2023-06-13 */ void putCacheList(String key, List data, long expiredSeconds); /** * 存储写入集合缓存 * @param key * @param data * @date 2023-06-13 */ void putCacheList(String key, List data); /** * 向给定集合追加数据。 * @param key * @param data * @date 2023-06-13 */ void putCacheListAppend(String key, T data); /** * 获取缓存的集合 * @param key 唯一ID * @return * @date 2023-06-13 */ List 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); }