使用radis存储时效性数据
/** * Token认证:Token的有效期,需要使用同一个Token鉴权时,可以缓存起来,避免频繁调用。 */ public String getToken() throws Exception { DataMsg dataMsg = DataMsg.successMsg("token获取:成功!"); String responStr = null; String token = null; //从redis中获取token Object o = redisTemplate.opsForValue().get("iam-token"); if(o!=null){ token = o.toString(); } //token过期后重新创建 if(token == null || token.equals("")) { responStr = HttpUtil.get("获取token的url"); if (null == responStr || null == com.alibaba.fastjson.JSONObject.parseObject(responStr)) { dataMsg.fail("token获取失败!"); return ""; } else { if (!com.alibaba.fastjson.JSONObject.parseObject(responStr).getString("message").equalsIgnoreCase("ok")) { dataMsg.fail("token获取失败!"); return ""; } else { String result = com.alibaba.fastjson.JSONObject.parseObject(responStr).getString("result"); if (null != result) { com.alibaba.fastjson.JSONObject obj = JSONObject.parseObject(result); if (null != obj) { token = obj.getString("access_token"); int expires_in = obj.getInteger("expires_in"); redisTemplate.opsForValue().set("iam-token", token, expires_in, TimeUnit.SECONDS); } } } } } return token; }
以token为例。很多时效性数据都可以以此进行存储。