redis实现登录注册--短信验证码存入redis实现短信登录

更新一篇java中Redis的使用(更新版):https://blog.csdn.net/qq_40437152/article/details/89033314

现在很多应用都用到短信验证。这篇博客主要记录下短信验证码存入redis,实现用户登录,算是个人笔记!

短信验证代码 就不多说了,这里用的阿里的短信SDK,简单修改就可以使用了!

   首先是在服务器上安装redis,服务器设置redis端口号,然后使用图形化连接服务器上的redis(你也可以直接操作服务器)

这里连接肯可能出现连接不上、连接错误等问题,百度一下 很多博客都会说到,就是防火墙设置和修改配置文件redis-conf

你也可以试试以下操作(以下摘自其他博客)

1、先检查防火墙的状态

通过systemctl status firewalld查看firewalld状态,发现当前是dead状态,即防火墙未开启

通过systemctl start firewalld开启防火墙,没有任何提示即开启成功。

【再次通过systemctl status firewalld查看firewalld状态,显示running即已开启了。

如果要关闭防火墙设置,可能通过systemctl stop firewalld这条指令来关闭该功能。】

2、开放6379端口

命令:firewall-cmd --permanent --add-port=6379/tcp

执行可以成功,返回success

用该命令查询firewall-cmd --permanent --query-port=6379/tcp

3、开放端口的配置要添加在:vi  /etc/sysconfig/iptables-config 文末就可以了;

添加的内容:-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 6379 -j ACCEPT

4、ip的配置问题

5、关闭防火墙

如何连接成功,那恭喜你啦,如果还是不行的话,度娘 嘿嘿(总会有答案的)

接下来就是Java操作redis了,Redis开发商提供了一个Java版本支持 Jedis类,它可以获得java和redis的连接

1、导入依赖 --如果你是maven项目

 在依赖中加入以下依赖(这里是2.8.0版本)


    redis.clients
    jedis
    2.8.0

2、如果不是maven项目,则就要去下载jar包了,我这里附上下载链接吧

http://central.maven.org/maven2/redis/clients/jedis/2.8.0/

这里jedis还需要一个依赖包,commons-pool2,不然jedis里面的config不能用的哦(坑已踩过)

下面Jedis代码

properties文件:

redis.host = 127.0.0.1

redis.port = 6379

redis.MaxTotal = 10

redis.MaxIdle = 10

redis.MinIdle = 10

static JedisPool jedisPool ;
	static Jedis jedis=  null;
	static {
		//转换为流的方式
		InputStream inputStream = JedisPoolUtil.class.getClassLoader().getResourceAsStream("redisDB.properties");
		Properties properties = new Properties();
		try {
			properties.load(inputStream);//加载流文件
		} catch (IOException e) {
			e.printStackTrace();
			System.out.println("读取配置文件失败");
		}
		String host = properties.getProperty("redis.host");
		Integer port = Integer.parseInt(properties.getProperty("redis.port"));
		Integer MaxTotal = Integer.parseInt(properties.getProperty("redis.MaxTotal"));
		Integer MaxIdle = Integer.parseInt(properties.getProperty("redis.MaxIdle"));
		Integer MinIdle = Integer.parseInt(properties.getProperty("redis.MinIdle"));

		JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
		jedisPoolConfig.setMaxTotal(10);
		jedisPoolConfig.setMaxIdle(MaxIdle);
		jedisPoolConfig.setMinIdle(MinIdle);
		jedisPool = new JedisPool(jedisPoolConfig,host,port);
	}

	public static Jedis  getJedis(){
		jedis = jedisPool.getResource();
		jedis.auth("root");
		return jedis;
	}

	public static void release(Jedis jedis){
		if (jedis != null){
			jedis.close();
		}
	}

发送验证码,将验证码存入redis,并设置有效时间(这里设置为五分钟)

smsResponse = SMSCodeUtils.sendSms(phoneNum, smsCode);
			json2.setCode(200);
			json2.setMsg("验证码已发送");
//			登录的验证码存入redis
			jedis.set(phoneNum+"login", smsCode);
//			设置key的有效期五分钟
//		    NX是不存在时才set, XX是存在时才set, EX是秒,PX是毫秒
			jedis.set(phoneNum+"login",smsCode,"XX","EX",300);

上面两个set可以合为一条,XX改为NX。就可以了,亲测可行!

第一次搞,简单的配置一下,欢迎大佬留言

你可能感兴趣的:(Redis)