当前位置: 代码网 > it编程>数据库>Redis > redis string实现共享会话和手机验证码应用场景

redis string实现共享会话和手机验证码应用场景

2025年11月05日 Redis 我要评论
共享会话实现思路如果每个应用服务器,维护自己的会话数据,此时彼此之间胡共享,用户请求访问到不同的服务器上,就可能会出现一些不能正确处理的情况了为了解决这个问题,可以使用 redis 将用户的 sess

共享会话

实现思路

如果每个应用服务器,维护自己的会话数据,此时彼此之间胡共享,用户请求访问到不同的服务器上,就可能会出现一些不能正确处理的情况了

为了解决这个问题,可以使用 redis 将用户的 session 信息进行几种管理,在这种模式下,只要保证 redis 是最高可用和可扩展性的,无论用户被均衡到哪台 web 服务器上,都集中从 redis 中查询、更新 session 信息!

手机验证码

实现思路

  1. 生成验证码

    • 用户输入手机号
    • 点击获取验证码(限制:1min 之内,最多获取 5 次)
  2. 检查验证码

    • 把短信收到的验证码这一串数,提交到系统中,验证是否正确

伪代码实现

生成验证码

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 来实现的(第三方提供的短信平台服务)(充值)

到此这篇关于redis string实现共享会话和手机验证码应用场景的文章就介绍到这了,更多相关redis string共享会话和手机验证码内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com