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

 更新时间:2025年11月05日 10:47:12   作者:椰椰椰耶  
本文主要介绍了redis string实现共享会话和手机验证码应用场景,一种是使用Redis集中管理会话信息,解决不同应用服务器间会话共享问题;另一种是实现手机验证码功能,包括生成、验证验证码的过程,感兴趣的可以了解一下

共享会话

实现思路

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

为了解决这个问题,可以使用 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共享会话和手机验证码内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Redis的过期策略以及内存淘汰机制详解

    Redis的过期策略以及内存淘汰机制详解

    文章详解Redis的过期策略(定时删除、惰性删除、定时扫描)和缓存淘汰算法(如LFU、LRU等),强调定时扫描通过随机抽样处理过期键,惰性删除在访问时清除过期键,同时指出需避免大量键同时过期,且主从同步延迟可能导致数据不一致,建议业务中合理设置过期时间与淘汰策略
    2025-08-08
  • Redis 分片集群搭建与故障转移实战指南(推荐)

    Redis 分片集群搭建与故障转移实战指南(推荐)

    本文介绍了如何搭建一个最小的Redis分片集群,并详细描述了集群的启动、创建、测试、伸缩和故障转移过程,同时,还介绍了如何使用RedisTemplate访问分片集群,感兴趣的朋友跟随小编一起看看吧
    2025-12-12
  • 关于Redis库存超卖问题的分析

    关于Redis库存超卖问题的分析

    在高并发场景下进行优惠券秒杀测试时,发现由于并发操作导致了超卖问题,即理论上只能卖出100个优惠券,实际卖出了102个,分析原因,是因为在高并发环境下,多个线程同时操作库存,导致数据不一致,提出了两种解决方案:悲观锁和乐观锁
    2024-11-11
  • redis服务如何启动

    redis服务如何启动

    这篇文章主要介绍了redis服务如何启动问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • Redis安装图文教程(Windows和Linux)

    Redis安装图文教程(Windows和Linux)

    这篇文章主要介绍了Redis安装教程(Windows和Linux),本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • Redis如何实现延迟队列

    Redis如何实现延迟队列

    这篇文章主要介绍了Redis如何实现延迟队列问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • Redis 写时复制的防坑指南

    Redis 写时复制的防坑指南

    Redis的写时复制是最容易被误解的特性之一,本文主要介绍了Redis写时复制的防坑指南,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2026-02-02
  • redis常用命令小结

    redis常用命令小结

    这篇文章主要介绍了redis的一些常用命令,需要的朋友可以参考下
    2014-06-06
  • Redis批量操作的实现示例

    Redis批量操作的实现示例

    本文主要介绍了Redis批量操作的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-11-11
  • redis实现共同好友的思路详解

    redis实现共同好友的思路详解

    微信朋友圈大家都玩过吧,那么朋友圈的点赞、评论只能看到自己好友的信息是怎么操作的呢?下面通过本文给大家分享下此功能的实现流程,对redis实现共同好友的方法感兴趣的朋友一起看看吧
    2021-05-05

最新评论