前言
1、缓存常见的问题
2、常见的内存缓存实现
使用Java中的Map实现简单的缓存
直接看代码,注释比较详细了
package com.prince.cache;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
/**
* @Description 基于Java中的Map实现缓存
* @Author prince Chen
* @Date 2020/10/28 21:32
*/
public class CacheProvider {
/**
* 缓存池
*/
private static final Map<String, CacheObject> CACHE_DB = new ConcurrentHashMap<String, CacheObject>();
/**
* 线程池,定时清理失效的缓存数据
*/
private static final ScheduledThreadPoolExecutor EXECUTOR = new ScheduledThreadPoolExecutor(5);
/**
* 读取缓存
*
* @param key 缓存key
* @param <T> 缓存数据类型
* @return 返回缓存数据
*/
public synchronized <T> T get(String key) {
CacheObject cacheObject = CACHE_DB.get(key);
return cacheObject == null ? null : (T) cacheObject.data;
}
/**
* 删除缓存
*
* @param key key
* @param <T> 缓存数据类型
* @return 返回缓存数据
*/
public synchronized <T> T remove(String key) {
CacheObject cacheObject = CACHE_DB.remove(key);
return cacheObject == null ? null : (T) cacheObject.data