java操作Redis緩存設(shè)置過(guò)期時(shí)間的方法
關(guān)于Redis的概念和應(yīng)用本文就不再詳解了,說(shuō)一下怎么在java應(yīng)用中設(shè)置過(guò)期時(shí)間。
在應(yīng)用中我們會(huì)需要使用redis設(shè)置過(guò)期時(shí)間,比如單點(diǎn)登錄中我們需要隨機(jī)生成一個(gè)token作為key,將用戶的信息轉(zhuǎn)為json串作為value保存在redis中,通常做法是:
//生成tokenString token = UUID.randomUUID().toString();//把用戶信息寫(xiě)入redisjedisClient.set(REDIS_USER_SESSION_KEY + ':' + token,JsonUtils.objectToJson(user));//設(shè)置session的過(guò)期時(shí)間 時(shí)間單位是秒jedisClient.expire(REDIS_USER_SESSION_KEY + ':' + token, 1800);
但這樣做可能會(huì)出現(xiàn)問(wèn)題,比如多并發(fā)上面,設(shè)置值和過(guò)期時(shí)間用了兩步操作。可以將設(shè)置值和過(guò)期時(shí)間合并成一步操作,所以可以使用redis的設(shè)置值set的另外一個(gè)方法:
// NX是不存在時(shí)才set, XX是存在時(shí)才set, EX是秒,PX是毫秒jedisClient.set(key, value, 'NX', 'EX', expireSecond);
取值的時(shí)候使用:
@Override public Result getUserByToken(String token) { //根據(jù)token從redis中查詢用戶信息 String json = jedisClient.get(REDIS_USER_SESSION_KEY + ':' + token); //判斷是否為空 if (StringUtils.isBlank(json)) { return Result.build(400, '此session已經(jīng)過(guò)期,請(qǐng)重新登錄'); } //更新過(guò)期時(shí)間 jedisClient.expire(REDIS_USER_SESSION_KEY + ':' + token, 1800); //返回用戶信息 return Result.ok(JsonUtils.jsonToPojo(json, TbUser.class)); }
其他使用方法:
public void save(String key, String value, Long expireSecond) { boolean keyExist = jedisClient.exists(key); if (keyExist) { jedisCluster.del(key); } // NX是不存在時(shí)才set, XX是存在時(shí)才set, EX是秒,PX是毫秒 jedisClient.set(key, value, 'NX', 'EX', expireSecond);}
到此這篇關(guān)于java操作Redis緩存設(shè)置過(guò)期時(shí)間的方法的文章就介紹到這了,更多相關(guān)java 設(shè)置過(guò)期時(shí)間內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. Python 如何調(diào)試程序崩潰錯(cuò)誤2. Python sublime安裝及配置過(guò)程詳解3. Python 利用Entrez庫(kù)篩選下載PubMed文獻(xiàn)摘要的示例4. Python 制作查詢商品歷史價(jià)格的小工具5. Python 合并拼接字符串的方法6. ASP.NET MVC使用jQuery ui的progressbar實(shí)現(xiàn)進(jìn)度條7. ASP基礎(chǔ)知識(shí)VBScript基本元素講解8. Python3 json模塊之編碼解碼方法講解9. Linux刪除系統(tǒng)自帶版本Python過(guò)程詳解10. python使用jenkins發(fā)送企業(yè)微信通知的實(shí)現(xiàn)

網(wǎng)公網(wǎng)安備