如果每个应用服务器,维护自己的会话数据,此时彼此之间胡共享,用户请求访问到不同的服务器上,就可能会出现一些不能正确处理的情况了
为了解决这个问题,可以使用 Redis
将用户的 Session
信息进行几种管理,在这种模式下,只要保证 Redis
是最高可用和可扩展性的,无论用户被均衡到哪台 Web
服务器上,都集中从 Redis
中查询、更新 Session
信息!
String 发送验证码(phoneNumber) {
key = "shortMsg:limit:" + phoneNumber;
// 设置过期时间为 1 min
//使用 NX,只在不存在 key 时才能设置成功
bool r = Redis 执行命令: set key 1 ex 60 nx
if (r == false) {
// 说明之前设置过该手机的验证码了
long c = Redis 执行命令: incr key
if (c > 5) {
// 说明超过一分钟 5 次的限制了
// 限制发送
return null;
}
}
// 说明要么之前没有设置过手机验证码;要么次数没有超过 5 次
String validationCode = 生成随机的 6 位数的验证码();
validationKey = "validation:" + phoneNumber;
// 验证码 5 分钟内有效
Redis 执行命令: set validationKey validationCode ex 300;
// 返回验证码
return vaildation;
}
// 验证用户输入的验证码是否正确
bool 验证验证码(phoneNumber, vaildation) {
vaildationKey = "vaildation:" + phoneNumber;
String value = Redis 执行命令: get vaildationKey;
if (value == null) {
// 说明没有这个手机验证码记录,验证失败
return false;
}
if (value == vaildationCode) {
retrurn true;
} else {
return false;
}
}
像发送短信这样的操作,都是有专门的
SDK
来实现的(第三方提供的短信平台服务)(充值)
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有