【七】springboot整合redis(超详细)
?springboot篇章整體欄目:?
【一】springboot整合swagger(超詳細(xì)
【二】springboot整合swagger(自定義)(超詳細(xì))
【三】springboot整合token(超詳細(xì))
【四】springboot整合mybatis-plus(超詳細(xì))(上)
【五】springboot整合mybatis-plus(超詳細(xì))(下)
【六】springboot整合自定義全局異常處理
【七】springboot整合redis(超詳細(xì))
【八】springboot整合AOP實(shí)現(xiàn)日志操作(超詳細(xì))
【九】springboot整合定時(shí)任務(wù)(超詳細(xì))
【十】springboot整合redis實(shí)現(xiàn)啟動(dòng)服務(wù)即將熱點(diǎn)數(shù)據(jù)保存在全局以及redis(超詳細(xì))
【十一】springboot整合quartz實(shí)現(xiàn)定時(shí)任務(wù)優(yōu)化(超詳細(xì))
【十二】springboot整合線程池解決高并發(fā)(超詳細(xì),保你理解)
【十三】springboot整合異步調(diào)用并獲取返回值(超詳細(xì))
【十四】springboot整合WebService(超詳細(xì))
【十五】springboot整合WebService(關(guān)于傳參數(shù))(超詳細(xì))
【十六】springboot整合WebSocket(超詳細(xì))
【十七】springboot整合WebSocket實(shí)現(xiàn)聊天室(超詳細(xì))
【十八】springboot實(shí)現(xiàn)自定義全局異常處理
【十九】springboot整合ElasticSearch實(shí)戰(zhàn)(萬(wàn)字篇)
【二十】springboot整合過(guò)濾器實(shí)戰(zhàn)
【二十一】springboot整合攔截器實(shí)戰(zhàn)并對(duì)比過(guò)濾器
【二十二】springboot整合activiti7(1) 實(shí)戰(zhàn)演示篇
【二十三】springboot整合spring事務(wù)詳解以及實(shí)戰(zhàn)
【二十四】springboot使用EasyExcel和線程池實(shí)現(xiàn)多線程導(dǎo)入Excel數(shù)據(jù)
【二十五】springboot整合jedis和redisson布隆過(guò)濾器處理緩存穿透
?
介紹:接下來(lái)我會(huì)把學(xué)習(xí)階段學(xué)到的框架等知識(shí)點(diǎn)進(jìn)行整合,每一次整合是在前一章的基礎(chǔ)上進(jìn)行的,所以后面的整合不會(huì)重復(fù)放前面的代碼。每次的demo我放在結(jié)尾,本次是接著上一章的內(nèi)容延續(xù)的,只增加新增的或者修改的代碼。
上一章對(duì)全局異常進(jìn)行了整合,可以處理統(tǒng)一拋出錯(cuò)誤。
1、這章整合redis,用redis存儲(chǔ)token,實(shí)現(xiàn)一個(gè)用戶只保存一個(gè)token,登錄接口再次獲取一個(gè)新的token后,前一個(gè)token則無(wú)法使用,解決一個(gè)用戶可以多次登錄的問(wèn)題。
2、實(shí)現(xiàn)用戶登錄3次就鎖定用戶賬戶,無(wú)法再請(qǐng)求登錄接口。
qq交流群導(dǎo)航——>231378628
先展示一下目錄結(jié)構(gòu):?
?
第一步:修改yml配置文件
?
注意:是在spring:下面,database是選擇存在第幾個(gè)庫(kù),如下:
?
此處我選擇的是“1”,所以存在為“1”的庫(kù)。
redis的密碼在安裝時(shí)已經(jīng)設(shè)置,也可以為空。若未安裝redis,請(qǐng)?jiān)赾sdn尋找大佬的安裝教程,不復(fù)雜。
第二步:新增redis操作工具類(lèi)
@Component public class RedisUtils {@Autowiredprivate RedisTemplate<String, String> redisTemplate;/*** 讀取緩存** @param key* @return*/public String get(final String key) {return redisTemplate.opsForValue().get(key);}/*** 寫(xiě)入緩存*/public boolean set(final String key, String value) {boolean result = false;try {redisTemplate.opsForValue().set(key, value);result = true;} catch (Exception e) {e.printStackTrace();}return result;}/*** 寫(xiě)入緩存,并設(shè)置過(guò)期時(shí)間** @param key* @param value* @param timeout* @param unit* @return*/public boolean set(final String key, String value, long timeout, TimeUnit unit) {boolean result = false;try {redisTemplate.opsForValue().set(key, value, timeout, unit);result = true;} catch (Exception e) {e.printStackTrace();}return result;}/*** 更新緩存*/public boolean getAndSet(final String key, String value) {boolean result = false;try {redisTemplate.opsForValue().getAndSet(key, value);result = true;} catch (Exception e) {e.printStackTrace();}return result;}/*** 刪除緩存*/public boolean delete(final String key) {boolean result = false;try {redisTemplate.delete(key);result = true;} catch (Exception e) {e.printStackTrace();}return result;} }不一定用這個(gè),網(wǎng)上到處有很多更詳細(xì)的工具類(lèi),按需使用。
第三步:改造token攔截器
原來(lái)的代碼(上幾章都有代碼):
?
改造:
注入redis工具類(lèi)。
?
修改方法。
?
到此實(shí)現(xiàn)了一個(gè)用戶只存在一個(gè)token的效果,下面改造登錄實(shí)現(xiàn)類(lèi)代碼,如下:
?
??把登陸失敗的次數(shù)存入redis,若達(dá)到3次則直接拋出異常,不再請(qǐng)求接口。
?第三步:演示
輸入正確賬號(hào)密碼。
?
將此token拿去請(qǐng)求接口,請(qǐng)求成功
?
重新請(qǐng)求登錄接口,生成新的token,拿去請(qǐng)求剛才的接口,新token可以請(qǐng)求成功,舊的token無(wú)法再請(qǐng)求成功。
?
?
?用正確的賬戶錯(cuò)誤的密碼登錄。
?
?錯(cuò)誤三次之后。
?
本期整合到此完畢,接下來(lái)會(huì)繼續(xù)更新加強(qiáng)整合,盡情期待。
訪問(wèn)地址:http://localhost:8088/swagger-ui.html或者h(yuǎn)ttp://localhost:8088/doc.html
demo地址:studydemo/整合swagger at main · zrc11/studydemo · GitHub
碼字不易,若幫到各位,幫忙三連,感謝
?
?
?
總結(jié)
以上是生活随笔為你收集整理的【七】springboot整合redis(超详细)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 希望我讲明白了G1 GC的过程
- 下一篇: Android 4.4 以太网网络共享功