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

為了解決這個(gè)問題,可以使用 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è)置過期時(shí)間為 1 min
//使用 NX,只在不存在 key 時(shí)才能設(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) {
// 說明沒有這個(gè)手機(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 分片集群搭建與故障轉(zhuǎn)移實(shí)戰(zhàn)指南(推薦)
本文介紹了如何搭建一個(gè)最小的Redis分片集群,并詳細(xì)描述了集群的啟動、創(chuàng)建、測試、伸縮和故障轉(zhuǎn)移過程,同時(shí),還介紹了如何使用RedisTemplate訪問分片集群,感興趣的朋友跟隨小編一起看看吧2025-12-12

