1.1简单示例
/**
* 简单示例
* @author joedy
*/
public class JedisDemo {
public static void main(String[] args) {
// 构造jedis对象,第一个参数是你的redis服务器的ip地址
Jedis jedis = new Jedis("172.16.116.100", 6379);
// 向redis中添加数据
jedis.set("mytest", "123");
// 从redis中读取数据
String value = jedis.get("mytest");
System.out.println(value);
// 关闭连接
jedis.close();
}
}
1.2连接池的使用
/**
* Jedis连接池的使用
* @author joedy
*/
public class JedisPoolDemo {
public static void main(String[] args) {
// 构建连接池配置信息
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
// 设置最大连接数
jedisPoolConfig.setMaxTotal(50);
// 构建连接池
JedisPool jedisPool = new JedisPool(jedisPoolConfig, "172.16.116.100", 6379);
// 从连接池中获取连接
Jedis jedis = jedisPool.getResource();
// 读取数据
System.out.println(jedis.get("mytest"));
// 将连接还回到连接池中
jedis.close();
// 释放连接池
jedisPool.close();
}
}
2.1手机验证码
完成一个手机验证码功能
要求:
1、输入手机号,点击发送后随机生成6位数字码,2分钟有效
2、输入验证码,点击验证,返回成功或失败
3、每个手机号每天只能输入3次
项目工程环境已经建好
下载地址:https://download.csdn.net/my
2.2发送验证码
public class CodeSenderServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public CodeSenderServlet() {
super();
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 1.获取手机号,并校验手机号
String phone = request.getParameter("phone_no");
if (phone == null) {
return ;
}
// 2.生成6位随机验证码
String code = generatedCode(VerifyCodeConfig.CODE_LEN);
// 3.保存到redis服务器,并设置有效时间是2分钟
Jedis jedis = new Jedis("172.16.116.100", 6379);
jedis.setex(VerifyCodeConfig.CODE_PREFIX + phone, VerifyCodeConfig.CODE_TIMEOUT, code);
//jedis.ping();
jedis.close();
// 4.发送短信给用户
System.out.println("短信发送成功:" + code);
// 5.响应true,注意不要使用println方法
response.getWriter().print(true);
}
private String generatedCode(int len) {
String code = "";
for (int i = 0; i < len; i++) {
int rand = new Random().nextInt(10);
code += rand;
}
return code;
}
}
2.3验证验证码
public class CodeVerifyServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public CodeVerifyServlet() {
super();
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 获取手机号和验证码
String phone = request.getParameter("phone_no");
String verifyCode = request.getParameter("verify_code");
// 判断手机号和验证码是否为null
if (phone == null || verifyCode == null) {
return ;
}
// 查询redis中的验证码
Jedis jedis = new Jedis("172.16.116.100", 6379);
String phoneCode = jedis.get(VerifyCodeConfig.CODE_PREFIX + phone);
jedis.close();
// 判断用户输入的验证码和redis中的验证码是否一致
if (verifyCode.equals(phoneCode)) {
// 响应
response.getWriter().print(true);
}
}
}
2.4限定次数
public class CodeSenderServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public CodeSenderServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
* response)
*/
@SuppressWarnings("resource")
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
Jedis jedis = new Jedis("192.168.157.100", 6379);
// 1.获取用户的电话号码
String phone = request.getParameter("phone_no");
// 进行判空
if (phone == null || phone.trim() == "") {
return;
}
String count = VerifyCodeConfig.PHONE_PREFIX + phone + VerifyCodeConfig.COUNT_SUFFIX;
if (jedis.exists(count) && (jedis.get(count) == null
|| Integer.parseInt(jedis.get(count)) >= VerifyCodeConfig.COUNT_TIMES_1DAY)) {
// 返回limit前台页面会做验证
response.getWriter().print("limit");
return;
/*
* System.out.println("你超过次数了"); return ;
*/
}
// 2.生成6位随机验证码
String code = getCode(VerifyCodeConfig.CODE_LEN);
// 3.保存到redis服务器,并设置有效时间是两分钟
jedis.setex(VerifyCodeConfig.PHONE_PREFIX + phone, VerifyCodeConfig.CODE_TIMEOUT, code);
// 4.发送短信给客户
System.out.println("短信发送成功:" + code);
// 如果没有存在就设置一个进去
if (!jedis.exists(count)) {
jedis.set(count, "0");
}
// 每发送一次验证码就加1
jedis.incr(count);
System.out.println(jedis.get(count));
// 响应true,注意不要使用println方法
jedis.close();
response.getWriter().print("true");
}
private String getCode(int len) {
String rand = "";
for (int i = 0; i < len; i++) {
rand += new Random().nextInt(9);
}
return rand;
/*
* String code=""; for (int i = 0; i < len; i++) { int rand= new
* Random().nextInt(10); code+=rand; }
*
* return code;
*/
}
}
效果