redis string實(shí)現(xiàn)共享會話和手機(jī)驗(yàn)證碼應(yīng)用場景
共享會話
實(shí)現(xiàn)思路
如果每個應(yīng)用服務(wù)器,維護(hù)自己的會話數(shù)據(jù),此時彼此之間胡共享,用戶請求訪問到不同的服務(wù)器上,就可能會出現(xiàn)一些不能正確處理的情況了

為了解決這個問題,可以使用 Redis 將用戶的 Session 信息進(jìn)行幾種管理,在這種模式下,只要保證 Redis 是最高可用和可擴(kuò)展性的,無論用戶被均衡到哪臺 Web 服務(wù)器上,都集中從 Redis 中查詢、更新 Session 信息!

手機(jī)驗(yàn)證碼
實(shí)現(xiàn)思路
生成驗(yàn)證碼
- 用戶輸入手機(jī)號
- 點(diǎn)擊獲取驗(yàn)證碼(限制:1min 之內(nèi),最多獲取 5 次)
檢查驗(yàn)證碼
- 把短信收到的驗(yàn)證碼這一串?dāng)?shù),提交到系統(tǒng)中,驗(yàn)證是否正確
偽代碼實(shí)現(xiàn)
生成驗(yàn)證碼
String 發(fā)送驗(yàn)證碼(phoneNumber) {
key = "shortMsg:limit:" + phoneNumber;
// 設(shè)置過期時間為 1 min
//使用 NX,只在不存在 key 時才能設(shè)置成功
bool r = Redis 執(zhí)行命令: set key 1 ex 60 nx
if (r == false) {
// 說明之前設(shè)置過該手機(jī)的驗(yàn)證碼了
long c = Redis 執(zhí)行命令: incr key
if (c > 5) {
// 說明超過一分鐘 5 次的限制了
// 限制發(fā)送
return null;
}
}
// 說明要么之前沒有設(shè)置過手機(jī)驗(yàn)證碼;要么次數(shù)沒有超過 5 次
String validationCode = 生成隨機(jī)的 6 位數(shù)的驗(yàn)證碼();
validationKey = "validation:" + phoneNumber;
// 驗(yàn)證碼 5 分鐘內(nèi)有效
Redis 執(zhí)行命令: set validationKey validationCode ex 300;
// 返回驗(yàn)證碼
return vaildation;
}
驗(yàn)證驗(yàn)證碼
// 驗(yàn)證用戶輸入的驗(yàn)證碼是否正確
bool 驗(yàn)證驗(yàn)證碼(phoneNumber, vaildation) {
vaildationKey = "vaildation:" + phoneNumber;
String value = Redis 執(zhí)行命令: get vaildationKey;
if (value == null) {
// 說明沒有這個手機(jī)驗(yàn)證碼記錄,驗(yàn)證失敗
return false;
}
if (value == vaildationCode) {
retrurn true;
} else {
return false;
}
}
像發(fā)送短信這樣的操作,都是有專門的 SDK 來實(shí)現(xiàn)的(第三方提供的短信平臺服務(wù))(充值)
到此這篇關(guān)于redis string實(shí)現(xiàn)共享會話和手機(jī)驗(yàn)證碼應(yīng)用場景的文章就介紹到這了,更多相關(guān)redis string共享會話和手機(jī)驗(yàn)證碼內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Redis分布式鎖方案設(shè)計(jì)之防止訂單重復(fù)提交或支付
這篇文章主要為大家介紹了Redis分布式鎖之防止訂單重復(fù)提交或支付方案設(shè)計(jì)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09
Centos7 Redis主從搭建配置的實(shí)現(xiàn)
這篇文章主要介紹了Centos7 Redis主從搭建配置的實(shí)現(xiàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-06-06
Spring Boot整合Redis實(shí)現(xiàn)訂單超時處理問題
這篇文章主要介紹了Spring Boot整合Redis實(shí)現(xiàn)訂單超時處理,通過這個基本的示例,你可以了解如何使用Spring Boot和Redis來處理訂單超時問題,并根據(jù)需要進(jìn)行擴(kuò)展和定制,需要的朋友可以參考下2023-11-11
redis性能優(yōu)化之生產(chǎn)中實(shí)際遇到的問題及排查總結(jié)
這篇文章主要介紹了redis性能優(yōu)化之生產(chǎn)中實(shí)際遇到的問題及排查總結(jié),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-12-12

