由于该楼层涉嫌违规,系统将其折叠并隐藏,以显示该楼层
1、前言
在我们开发项目的过程中,经常会遇到读写不多的界面。 这些接口有大量的查询操作。 如果必须查询数据库进行这些查询操作,则数据库可能无法承受,或者数据库响应缓慢,接口可能无法在指定的时间响应。 因此,我们将减少数据库查询操作,并使用多级高速缓存机制。
2、写法
基于//id查询查询查询APP
@cacheable(value='app ',key='#appId ' ) )
publicappgetappbyappid (integer appid ) {
String redisKey='app:' appId;
询问Redis
stringjsonstr=redis template.ops for value ().get ) rediskey;
if (JSON str==空值) {
//查询数据库
appapp=app Dao.selectbyprimarykey (appid;
string value=JSON.tojsonstring (app );
写在Redis上
redisTemplate.opsForValue ().set ) rediskey,value,
6 * 60 new Random ().nextint ) )、TimeUnit.SECONDS );
返回应用程序;
}
returnJSON.parseobject(JSONstr,new TypeReference ) (
);
}
在方法之前添加@Cacheable注释并将Ehcache以注释格式绑定到方法时,从方法返回的内容将直接存储在Ehcache中。 对于此缓存,不进入方法而直接返回。
进入方法,检查Redis。 如果Redis不存在,请使用appDao的selectByPrimaryKey方法检查数据库,并使用Redistemplate.opsforvalue(.set )方法将其重写为Redis。 json.parseObject ) )方法将JSON格式的内容转换为App类并返回。
其中为了避免缓存破坏的问题,在设定redis的有效期限时追加随机数。