首先在linux中下载redis,要先有gcc环境,因为redis是基于c,而且gcc版本要高于5.3
#
升级到
5.3
及以上版本
yum -y install centos-release-scl
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
scl enable devtoolset-9 bash
redis默认安装到usr/local/bin
在redis.conf中配置
1.关闭保护模式protected-mode 设置为no
2.注释掉bind,bind默认只能本机访问
记得关闭linux防火墙systemctl stop firewalld
redis后台启动
redis.conf复制到etc目录
cp redis.conf /etc/redis.conf
将配置文件daemonize对应的值改成yes,表示支持后台启动
快速搜索/daem
启动redis-server /etc/redis.conf(配置文件所在的目录)
ps -ef|grep redis 默认端口6379
进入默认安装路径/usr/local/bin redis-cli 连接redis
测试验证ping 输出PONG表示正常
关闭shutdown
然后可以创建maven工程导入以来的jar包jedis或者使用普通的工程下载jar包
<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>3.6.0-RC1</version> </dependency>
可以把生成验证码抽取成一个方法
private static String getCode() {
// 随机生成6位验证码,2分钟内有效
StringBuilder sb = new StringBuilder();
Random random = new Random();
for (int i = 1; i <= 6; i++) {
int anInt = random.nextInt(10);
sb.append(anInt);
}
char[] chars = sb.toString().toCharArray();
// 用字符串接收
String str = new String(chars);
System.out.println(str);
return str;
}
发送验证码
public static void verifyCode(String phone){
Jedis jedis = new Jedis("linux中的ip",6379);
jedis.auth("密码");// 如果redis没设置密码不用写
String countKey = "VerifyCode" + phone + ":count";//发送的次数
String codeKey = "VerifyCode" + phone + ":code";//发送的验证码
String count = jedis.get(countKey);//获取发送次数
if (count == null){
jedis.setex(countKey,24*60*60,"1");//将次数设为1,传到redis
}else if (Integer.parseInt(count)<=2){
jedis.incr(codeKey);
}else if (Integer.parseInt(count)>2){
System.out.println("今天的发送次数超过三次");
jedis.close();
return;
}
// 把验证码放到redis中并设置失效时间
String vcode = getCode();
jedis.setex(codeKey,120,vcode);
jedis.close();
}
验证码校验
// 验证码校验
public static void getRedisCode(String phone,String code){
Jedis jedis = new Jedis("linux端口号",6379);
jedis.auth("密码");
String codeKey = "VerifyCode" + phone + ":code";
String str = jedis.get(codeKey);//获取redis中的验证码
if (str.equals(code)){// 进行比较
System.out.println("验证码输入正确");
}else {
System.out.println("验证码输入错误");
}
jedis.close();
}
测试
@Test
public void test6(){
// 先发送验证码
//verifyCode("任意手机号");
// 发送完后校验
getRedisCode("任意手机号","556702");
}