Java通用缓存处理类CacheHelper
废话不多说 直接上代码
package com.xxx.xxx.xxx.cache;
import com.alibaba.fastjson.JSON;
import lombok.extern.slf4j.Slf4j;
import java.io.BufferedWriter;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.HashMap;
import java.util.Map;
/**
* 通用缓存处理
* @author lcy
* @date 2021-06-19
*/
@Slf4j
public class CacheHelper<T> {
//缓存容器
private Map<String, T> cacheMap;
// 初始化
public CacheHelper() {
cacheMap = new HashMap<>();
}
// 增加缓存
public void addCache(String key, T value) {
cacheMap.put(key, value);
}
// 获取缓存
public T getCache(String key) {
return cacheMap.get(key);
}
// 判断缓存是否存在
public boolean exists(String key) {
return cacheMap.containsKey(key);
}
// 判断缓存中是否存在数据
public boolean exists() {
return cacheMap.isEmpty();
}
// 移除某个数据
public void remove(String key) {
cacheMap.remove(key);
}
// 清空缓存
public void clear() {
cacheMap.clear();
}
// 获取缓存大小
public int getSize() {
return cacheMap.size();
}
// 将数据缓存为文件
public void saveCache(Path path) {
String data = JSON.toJSONString(cacheMap);
writeBufferFileToDest(path, data);
}
/**
* 字符缓冲流写入文件到指定路径
* @param path 写入文件地址
*/
public static void writeBufferFileToDest(Path path, String text) {
BufferedWriter bufferedWriter = null;
try {
if (!Files.exists(path)) {
Files.createFile(path);
}
bufferedWriter = Files.newBufferedWriter(path, StandardCharsets.UTF_8);
bufferedWriter.write(text);
log.info("写入缓存完成: " + path.toAbsolutePath());
bufferedWriter.close();
} catch (IOException e) {
log.error("写入缓存异常: " + e.getMessage());
}
}
}