使用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为例。很多时效性数据都可以以此进行存储。

posted @ 2020-12-23 14:55  花皎  阅读(220)  评论(0编辑  收藏  举报