今天在修改同事代码的时候,发现他使用了缓存来进行数据交互。
在第一次查询数据时,需要访问数据库进行查询,然后将查询的数据放入缓存中,以id为key值;若是同样的id再次发起相同请求,会先判断是否命中缓存,若是命中,则直接获取缓存中的数据,然后返回,无需再次访问数据库。
现将大体的代码实现记录于此:
添加缓存
// 给缓存的key值一个前缀
private static final String FORM_CACHE_PREFIX = "FORM_CACHE:";
// 添加缓存
@Resource
private CacheManager cacheManager;
private Cache cache;
@PostConstruct
public void initCache() {
// 获取系统缓存
this.cache= cacheManager.getCache(CACHE_SYSTEM_PARAM);// 系统参数缓存名称
}
判断是否命中缓存
// 缓存是否命中
String currentCacheKey = FORM_CACHE_PREFIX + id;
Entity cacheData = cache.get(currentCacheKey, Entity.class); // Entity实体类
if (null != cacheData ) {
return cacheData;
}
第一次,则存入缓存
// 数据库查询操作
...
Entity data = querySql(...)
// 放入缓存
cache.put(currentCacheKey, data);
这样就完成了一次简单的缓存使用。