RedisTemplate Api使用記載

一:浩句

這世界有一種人,從來不遺憾,他們與哪些成功學(xué)再無牽手的機(jī)會空闲。只是認(rèn)為當(dāng)下想這樣做,于是就去做了÷腔遥活在當(dāng)下,做自己人生的主人公钝凶,僅此而已
<h5 align = "right">----------------《不畏將來不戀過去》</h5>


二:背景

最近不是在做redis緩存嘛,之前也用過,但是最近用了發(fā)現(xiàn)做時間緩存好麻煩甫何,所以看看是否可以簡便點(diǎn)出吹,順便也記載下來,專門用來寫spring-data-redis 中RedisTemplate api使用辙喂。


三:問題

3.1最近在做token的驗證,那么token就有有效期的問題,對于有效期的問題捶牢,每次都是將token當(dāng)作key,value就是userid_time_,代表其他根據(jù)自己需求進(jìn)行鸠珠。
3.2自己首先的做法

import java.util.concurrent.TimeUnit;
import javax.annotation.Resource;
import org.springframework.data.redis.core.RedisTemplate;
public class RedisServer {
     @Resource(name = "redisTemplate")
     RedisTemplate<String, Object> redisTemplate;
     /**
      * 獲取緩存的地址
      * @param cacheKey
      * @return
      */
     public String getCacheValue(String cacheKey){
        String cacheValue=(String)redisTemplate.opsForValue().get(cacheKey);
        return cacheValue;
     }
     
     /**
      * 設(shè)置緩存值
      * @param key
      * @param value
      */
     public void setCacheValue(String key,String value){
         redisTemplate.opsForValue().set(key, value);
     }
     
     /**
      * 設(shè)置緩存值并設(shè)置有效期
      * @param key
      * @param value
      */
     public void setCacheValueForTime(String key,String value,long time){
         redisTemplate.opsForValue().set(key, value, time, TimeUnit.SECONDS);
     }
     
     /**
      * 刪除key值
      * @param key
      */
     public void delCacheByKey(String key){
         redisTemplate.opsForValue().getOperations().delete(key);
         redisTemplate.opsForHash().delete("");
     }
     
     /**
      * 獲取token的有效期
      * @param key
      */
     public long getExpireTime(String key){
         long time = redisTemplate.getExpire(key);
         return time;
     }
     
     /**
      * 指定時間類型---秒
      * @param key
      * @return
      */
     public long getExpireTimeType(String key){
         long time = redisTemplate.getExpire(key,TimeUnit.SECONDS);
         return time;
     }
     
     /**
      * 
      * @param key---分
      * @return
      */
     public long getExpireTimeTypeForMin(String key){
         long time = redisTemplate.getExpire(key,TimeUnit.MINUTES);
         return time;
     }
     
     /**
      * 設(shè)置一個自增的數(shù)據(jù)
      * @param key
      * @param growthLength
      */
     public void testInc(String key,Long growthLength){
         redisTemplate.opsForValue().increment(key, growthLength);
     }
}

自己在生成token后,將value=userid_time當(dāng)作可以秋麸,然后使用上述的

public void setCacheValueForTime(String key,String value,long time);

來緩存,其中time我設(shè)置的類型是渐排。
然后在做驗證的時候根據(jù)token取出value,再按照"_"進(jìn)行拆分取到時間,在對時間跟當(dāng)前時間做對比竹勉。
所以這樣做是否很麻煩了,當(dāng)然麻煩了飞盆,所以既然我設(shè)置了過期時間,那么我是否還可以拿到這個token還剩下多久時間過期

Paste_Image.png

在其API中看到這兩個方法,所以就有了上面的

     public long getExpireTime(String key){
         long time = redisTemplate.getExpire(key);
         return time;
     }
    /**指定秒*/
     public long getExpireTimeType(String key){
         long time = redisTemplate.getExpire(key,TimeUnit.SECONDS);
         return time;
     }
/**指定分鐘*/
   public long getExpireTimeTypeForMin(String key){
         long time = redisTemplate.getExpire(key,TimeUnit.MINUTES);
         return time;
     }

一個是獲取有效時間,一個是可以指定時間類型返回次乓。
下面是我做的測試,我設(shè)置token的有效期是30分鐘也就是1800秒,前面timeTypeMin是指定分鐘返回的數(shù)據(jù)吓歇,time是getExpireTime(String key)返回數(shù)據(jù),timeType是指定秒返回的數(shù)據(jù)。

{
  "resultCode": "00000",
  "resultMsg": "SUCCESS",
  "resultMap": {
    "result": {
      "timeTypeMin": 6,
      "time": 396,
      "timeType": 395
    }
  }
}

3.3在linux上查看的方式
可以使用ttl key可以看到剩余時間票腰。如果該key已經(jīng)過期,將返回"-2"城看。

linux_Image.png
代碼測試返回結(jié)果如下:getExpire的方法返回-2,其他返回都是0
{
  "resultCode": "00000",
  "resultMsg": "SUCCESS",
  "resultMap": {
    "result": {
      "timeTypeMin": 0,
      "time": -2,
      "timeType": 0
    }
  }
}

3.4有關(guān)incr的用法
在生成token的時候我有考慮使用一串隨機(jī)數(shù)然后在加上一個字增的數(shù)據(jù),在redis中可以使用incr的方式實(shí)現(xiàn),那么在redisTemplate的實(shí)現(xiàn)方式

  public void testInc(String key,Long growthLength){
         redisTemplate.opsForValue().increment(key, growthLength);
     }

這里如果key不存在則會設(shè)置為growthLength大小,如果已經(jīng)存在,則會在已經(jīng)存在的基礎(chǔ)上加growthLength大小杏慰。

四:浩語

                                           __                                                        
                            __  _  ____ __|  |__ _____    ___
                            \ \/ \/ /  |  \  |  \\__  \  /  _ \   
                             \     /|  |  /   Y  \/ __ \(  <_> )
                              \/\_/ |____/|___|  (____  /\____/ 
                                                    \/     \/          
                                 任何事情都是要靠努力和用心测柠。                                                   
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市缘滥,隨后出現(xiàn)的幾起案子轰胁,更是在濱河造成了極大的恐慌,老刑警劉巖朝扼,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件赃阀,死亡現(xiàn)場離奇詭異,居然都是意外死亡擎颖,警方通過查閱死者的電腦和手機(jī)榛斯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來搂捧,“玉大人驮俗,你說我怎么就攤上這事≡逝埽” “怎么了王凑?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長聋丝。 經(jīng)常有香客問我索烹,道長,這世上最難降的妖魔是什么潮针? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任术荤,我火速辦了婚禮,結(jié)果婚禮上每篷,老公的妹妹穿的比我還像新娘瓣戚。我一直安慰自己端圈,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布子库。 她就那樣靜靜地躺著舱权,像睡著了一般。 火紅的嫁衣襯著肌膚如雪仑嗅。 梳的紋絲不亂的頭發(fā)上宴倍,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天,我揣著相機(jī)與錄音仓技,去河邊找鬼鸵贬。 笑死,一個胖子當(dāng)著我的面吹牛脖捻,可吹牛的內(nèi)容都是我干的阔逼。 我是一名探鬼主播,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼地沮,長吁一口氣:“原來是場噩夢啊……” “哼嗜浮!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起摩疑,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤危融,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后雷袋,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體吉殃,經(jīng)...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年片排,在試婚紗的時候發(fā)現(xiàn)自己被綠了寨腔。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片速侈。...
    茶點(diǎn)故事閱讀 40,503評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡率寡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出倚搬,到底是詐尸還是另有隱情冶共,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布每界,位于F島的核電站捅僵,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏眨层。R本人自食惡果不足惜庙楚,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望趴樱。 院中可真熱鬧馒闷,春花似錦酪捡、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至疏虫,卻和暖如春永罚,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背卧秘。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工呢袱, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人翅敌。 一個月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓产捞,卻偏偏與公主長得像,于是被迫代替她去往敵國和親哼御。 傳聞我的和親對象是個殘疾皇子坯临,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評論 2 359

推薦閱讀更多精彩內(nèi)容