Cache - 缓存工具
c 提供统一的缓存接口 ICache 和内存实现 MemoryCache。
ICache 接口
public interface ICache {
<T extends Serializable> T get(String name, Serializable key, Type type);
void put(String name, Serializable key, Serializable value, int seconds);
void remove(String name, Serializable key);
void removeAll(String name);
Set<String> keys(String name, String keyPrefix);
Map<String, Serializable> all(String name, String keyPrefix);
<T> T getAndSet(String name, Serializable key, Callable<VAL<T, Integer>> valueLoader);
}
MemoryCache 使用
ICache cache = new MemoryCache();
// 基本操作
cache.put("user", "123", userObject, 3600); // 1小时过期
User user = cache.get("user", "123", User.class);
cache.remove("user", "123");
// 获取或设置(不存在时执行回调并缓存)
User user = cache.getAndSet("user", "123", () -> {
return VAL.of(database.getUser(123), 3600);
});
// 批量操作
Set<String> keys = cache.keys("user", "user_*");
Map<String, Serializable> all = cache.all("user", "user_*");
过期机制
seconds > 0:指定秒数后过期seconds = -1:永不过期- 后台守护线程定期清理过期缓存
说明
- 缓存键和值必须实现
Serializable - MemoryCache 是线程安全的
- 适用于单机场景,分布式环境需自行实现
ICache(如 Redis)