java操作Redis緩存設(shè)置過期時(shí)間的方法
關(guān)于Redis的概念和應(yīng)用本文就不再詳解了,說一下怎么在java應(yīng)用中設(shè)置過期時(shí)間。
在應(yīng)用中我們會(huì)需要使用redis設(shè)置過期時(shí)間,比如單點(diǎn)登錄中我們需要隨機(jī)生成一個(gè)token作為key,將用戶的信息轉(zhuǎn)為json串作為value保存在redis中,通常做法是:
//生成tokenString token = UUID.randomUUID().toString();//把用戶信息寫入redisjedisClient.set(REDIS_USER_SESSION_KEY + ':' + token,JsonUtils.objectToJson(user));//設(shè)置session的過期時(shí)間 時(shí)間單位是秒jedisClient.expire(REDIS_USER_SESSION_KEY + ':' + token, 1800);
但這樣做可能會(huì)出現(xiàn)問題,比如多并發(fā)上面,設(shè)置值和過期時(shí)間用了兩步操作。可以將設(shè)置值和過期時(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)過期,請重新登錄'); } //更新過期時(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è)置過期時(shí)間的方法的文章就介紹到這了,更多相關(guān)java 設(shè)置過期時(shí)間內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. ASP常用日期格式化函數(shù) FormatDate()2. html中的form不提交(排除)某些input 原創(chuàng)3. bootstrap select2 動(dòng)態(tài)從后臺(tái)Ajax動(dòng)態(tài)獲取數(shù)據(jù)的代碼4. 網(wǎng)頁中img圖片使用css實(shí)現(xiàn)等比例自動(dòng)縮放不變形(代碼已測試)5. CSS3中Transition屬性詳解以及示例分享6. python 如何在 Matplotlib 中繪制垂直線7. vue使用moment如何將時(shí)間戳轉(zhuǎn)為標(biāo)準(zhǔn)日期時(shí)間格式8. js select支持手動(dòng)輸入功能實(shí)現(xiàn)代碼9. jsp文件下載功能實(shí)現(xiàn)代碼10. 開發(fā)效率翻倍的Web API使用技巧
