前言:
作者简介:我是笑霸final,一名热爱技术的在校学生。
个人主页:个人主页1 || 笑霸final的主页2
系列专栏:本文写在java专栏 | | 后端专栏
如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步
如果感觉博主的文章还不错的话,点赞 + 关注 + 收藏
<dependency>
<groupId>redis.clientsgroupId>
<artifactId>jedisartifactId>
<version>3.2.0version>
dependency>
禁用Linux的防火墙:Linux(CentOS7)里执行命令
systemctl stop/disable firewalld.service
redis.conf中注释掉bind 127.0.0.1 ,然后 protected-mode no
1.注释掉 bind 127.0.0.1
可以在 vim redis.conf 后进入指令模式(shift +:)
然后输入:/单词
快速找到单词的位置
== 2.修改protected-mode==
在 redis.conf 中找到 protected-mode 将后面的 yes 改为 no
== 3.修改daemonize==
在 redis.conf 中找到 daemonize 将后面的 no 改为 yes
4.修改密码(requirepass foobared)
在 redis.conf 中找到 requirepass foobared ,可在下面添加 requirepass 你的密码
执行完以上操作后进入指令模式 wq 保存退出
5云服务器记得在安全组开放端口 有宝塔得宝塔也要开放端口
二、重启redis
1.关闭redis
在 redis-cli 所在的目录下输入: redis-cli -a 密码
进入到 redis 指令模式,输入: shutdown
然后再输入: exit
2.启动redis
在 redis-server 所在的目录下输入: redis-server redis.conf所在目录/redis.conf
可以通过指令 ps aux | grep redis 查看redis状态
开放端口:
firewall-cmd --add-port=6379/tcp --permanent
重启防火墙生效
要求:
1、输入手机号,点击发送后随机生成6位数字码,2分钟有效
2、输入验证码,点击验证,返回成功或失败
3、每个手机号每天只能输入3次
思考:
- =思路==
* 1.随机密码可以用random
* 验证码2分钟有效可以把验证码放入redis 设置过期时间120
* 2.验证问题可以比较redis和输入比较
* 3.每个手机号每天只能输入三次
* 用incr 每次发送后+1 大于2时就不能发送了
*/
代码:
package com.xbfinal.jedis;
import redis.clients.jedis.Jedis;
import java.util.Random;
/**
* @autor 笑霸fianl~
* 欢迎访问GitHub:https://github.com/XBfinal
* 欢迎访问Gitee:https://gitee.com/XBfianl
* 欢迎访问CSDN:https://blog.csdn.net/weixin_52062043
*/
public class PhoneCode {
/**
* ============模拟手机验证码发送========
* 1.输入手机号 生成6位验证码,2分钟有效
* 2.输入验证码,验证
* 3.每个手机号每天只能输入三次
*/
/**
* =============思路==============
* 1.随机密码可以用random
* 验证码2分钟有效可以把验证码放入redis 设置过期时间120
* 2.验证问题可以比较redis和输入比较
* 3.每个手机号每天只能输入三次
* 用incr 每次发送后+1 大于2时就不能发送了
*/
public static void main(String[] args) {
for(int i=0;i<4;i++){
System.out.println("第"+(i+1)+"次执行得结果:");
//输入手机号
final String Code = verifyCode("13555555557");
//验证
getRedisCode("13555555557","111111");
getRedisCode("13555555557",Code);
System.out.println("===========================");
}
}
/**
* 生成6位数字验证码
*/
public static String getCode(){
final Random random = new Random();
//直接生成6位数
final int i = 100000+random.nextInt(1000001-100000);
// String code=i+"";
return Integer.toString(i);
}
/**
* 验证码2分钟有效可以把验证码放入redis
* 设置过期时间120每个手机号每天只能输入三次
*/
public static String verifyCode(String phone){
//1.链接redis
final Jedis jedis = new Jedis("xxx.xxx.xxx.xxx",6379);//需要redis得host和端口号
final String auth = jedis.auth("xxxx");//输入密码没设置密码就不用这一步
/**
* 拼接 key
* 手机发送次数key
* 验证码key
*/
//手机发送次数key
String countKey="verifyCode"+phone+":count";
//验证码key
String codeKey="verifyCode"+phone+":code";
//每个手机号每天只能输入三次
final String count = jedis.get(countKey);
if(count==null){
//说明没有发送过,就设置
jedis.setex(countKey,24*62*62,"1");
}else if(Integer.parseInt(count) <=2){
//说明没有超过3次 发送次数加1
jedis.incr(countKey);
}else{
//已经发送三次 不能发送了
System.out.println("今天发送次数 超过3次 明天再来吧");
jedis.close();
}
//发送得验证码 放入 redis
final String vcode = getCode();
jedis.setex(codeKey,2*60,vcode);
System.out.println("输入手机号时得验证码:"+vcode);
jedis.close();//关闭链接
return vcode;
}
/**验证 验证码
*
* @param phone
* @param code
*/
public static void getRedisCode(String phone,String code){
//手机发送次数key
String countKey="verifyCode"+phone+":count";
//验证码key
String codeKey="verifyCode"+phone+":code";
//从redis获取验证码
final Jedis jedis = new Jedis("101.200.230.213",6379);//需要redis得host和端口号
final String auth = jedis.auth("0615");//输入密码
final String RedisCode = jedis.get(codeKey);
if(RedisCode.equals(code)){
System.out.println("验证成功");
}else{
System.out.println("验证失败");
}
jedis.close();
}
}