Jedis操作Redis实现模拟验证码发送功能


Posted in Redis onSeptember 25, 2021

jedis的创建

1.先启动redis 如果报

Jedis操作Redis实现模拟验证码发送功能

那么说明你redis服务器服务器端还没打开

//启动服务端
redis-server /etc/redis.conf
//启动客户端
redis-cli

如果启动成功,就是这样

Jedis操作Redis实现模拟验证码发送功能

2.创建一个maven工程

导入Jedis依赖

<dependencies>
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>3.2.0</version>
        </dependency>
    </dependencies>

3.创建一个class

public class JedisDemo1 {
    public static void main(String[] args) {
        Jedis jedis = new Jedis("xx.xxx.xx.xx",6379);
        //如果redis配置了密码就在这里输入不然会连接失败
        jedis.auth("xxxx");
        String value = jedis.ping();
        System.out.println(value);
    }
}

如果是第一次连接会很大概率报错

Jedis操作Redis实现模拟验证码发送功能

这时候有两种方法第一种是关闭防火墙,但是这种不太好,其实只要开放6379端口连接就可以了

jedis实现模拟验证码

public class PhoneCode {
    public static void main(String[] args) {

            verifyCode("12345678900");
            //校验验证码是否正确
//            GetRedisCode("12345678900","940487");
    }

    //1.生成六位验证码
    public static String getCode(){
        Random random = new Random();
        String Code = "";
        for (int i = 0; i < 6; i++) {
            int i1 = random.nextInt(10);
            Code = Code +i1;
        }
        return Code;
    }

    //2.每个手机每天只能发三次,验证码放到redis中,设置过期时间
    public static void verifyCode(String phone){
        //连接redis
        Jedis jedis = new Jedis("172.18.17.215",6379);
        jedis.auth("1052600676");
        //先自定义两个key,从而通过后面步骤给key赋一个value
        //手机发送次数
        String CountKey = phone+"count";
        //验证码key
        String CodeKey = phone + "code";

        //每个手机每天只能发送三次
        //通过key查看是否有value
        String count = jedis.get(CountKey);
        if (count == null){
            //没有发送次数,说明是第一次发送,那就设置发送次数为1
            jedis.setex(CountKey,24*60*60,"1");
        }else if (Integer.parseInt(count) <= 2){
            jedis.incr(CountKey);
        }else if (Integer.parseInt(count) > 2){
            System.out.println("验证码超过三次,无法发送");
            jedis.close();
            return;
        }

        //设置过期时间
        //value
        String codee = getCode();

        jedis.setex(CodeKey,120,codee);
        jedis.close();

    }

    //3.验证码校验
    public static void GetRedisCode(String phone,String code){
        //连接redis
        Jedis jedis = new Jedis("172.18.17.215",6379);
        jedis.auth("1052600676");

        //验证码key
        String CodeKey = phone + "code";
        String RedisCode = jedis.get(CodeKey);

        if (RedisCode.equals(code)){
            System.out.println("成功");
        }else{
            System.out.println("失败");
        }
        jedis.close();
    }

}

通过这些操作实现验证码发送

Jedis操作Redis实现模拟验证码发送功能

超过三次

Jedis操作Redis实现模拟验证码发送功能

相关数据类型测试

Key

jedis.set("k1", "v1");
	jedis.set("k2", "v2");
	jedis.set("k3", "v3");
		
	Set<String> keys = jedis.keys("*");

	System.out.println(keys.size());

	for (String key : keys) {
		System.out.println(key);
	}

	System.out.println(jedis.exists("k1"));
	System.out.println(jedis.ttl("k1"));                
	System.out.println(jedis.get("k1"));

String

jedis.mset("str1","v1","str2","v2","str3","v3");
	
	System.out.println(jedis.mget("str1","str2","str3"));

List

List<String> list = jedis.lrange("mylist",0,-1);
	
	for (String element : list) {
		System.out.println(element);
	}

set

jedis.sadd("orders", "order01");
	jedis.sadd("orders", "order02");
	jedis.sadd("orders", "order03");
	jedis.sadd("orders", "order04");
	
	Set<String> smembers = jedis.smembers("orders");
	
	for (String order : smembers) {
		System.out.println(order);
	}
	
	jedis.srem("orders", "order02");

hash

jedis.hset("hash1","userName","lisi");
	System.out.println(jedis.hget("hash1","userName"));
	
	Map<String,String> map = new HashMap<String,String>();
	
	map.put("telphone","13810169999");
	map.put("address","atguigu");
	map.put("email","abc@163.com");
	
	jedis.hmset("hash2",map);
	
	List<String> result = jedis.hmget("hash2","telphone","email");
	
	for (String element : result) {
		System.out.println(element);
	}

zset

jedis.zadd("zset01", 100d, "z3");
	jedis.zadd("zset01", 90d, "l4");
	jedis.zadd("zset01", 80d, "w5");
	jedis.zadd("zset01", 70d, "z6");
 
	Set<String> zrange = jedis.zrange("zset01", 0, -1);
	
	for (String e : zrange) {
		System.out.println(e);
	}

到此这篇关于Jedis操作Redis实现模拟验证码发送的文章就介绍到这了,更多相关Redis验证码发送内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Redis 相关文章推荐
Redis安装启动及常见数据类型
Apr 14 Redis
Redis Cluster 字段模糊匹配及删除
May 27 Redis
浅析Redis Sentinel 与 Redis Cluster
Jun 24 Redis
redis客户端实现高可用读写分离的方式详解
Jul 04 Redis
使用redis生成唯一编号及原理示例详解
Sep 15 Redis
Redis的字符串是如何实现的
Oct 24 Redis
分布式架构Redis中有哪些数据结构及底层实现原理
Mar 13 Redis
redis调用二维码时的不断刷新排查分析
Apr 01 Redis
redis sentinel监控高可用集群实现的配置步骤
Apr 01 Redis
详解Redis的三种常用的缓存读写策略步骤
May 06 Redis
利用Redis实现点赞功能的示例代码
Jun 28 Redis
为什么RedisCluster设计成16384个槽
使用redis生成唯一编号及原理示例详解
Sep 15 #Redis
Redis读写分离搭建的完整步骤
Sep 14 #Redis
在项目中使用redis做缓存的一些思路
Redis RDB技术底层原理详解
Sep 04 #Redis
使用redis实现延迟通知功能(Redis过期键通知)
Redis集群新增、删除节点以及动态增加内存的方法
Sep 04 #Redis
You might like
咖啡的传说和历史
2021/03/03 新手入门
国内咖啡文化
2021/03/03 咖啡文化
一步一步学习PHP(4) php 函数 补充2
2010/02/15 PHP
php定时计划任务的实现方法详解
2013/06/06 PHP
试用php中oci8扩展
2015/06/18 PHP
iis 7下安装laravel 5.4环境的方法教程
2017/06/14 PHP
laravel开发环境homestead搭建过程详解
2020/07/03 PHP
JS 实现Table相同行的单元格自动合并示例代码
2013/08/27 Javascript
利用jQuery实现可输入搜索文字的下拉框
2013/10/23 Javascript
js中实现多态采用和继承类似的方法
2014/08/22 Javascript
javascript每日必学之封装
2016/02/23 Javascript
JavaScript与java语言有什么不同
2016/09/22 Javascript
浅析vue component 组件使用
2017/03/06 Javascript
Angular 通过注入 $location 获取与修改当前页面URL的实例
2017/05/31 Javascript
JavaScript队列函数和异步执行详解
2017/06/19 Javascript
深入探究node之Transform
2017/07/20 Javascript
vue 中directive功能的简单实现
2018/01/05 Javascript
用ES6写全屏滚动插件的示例代码
2018/05/02 Javascript
vue element中axios下载文件(后端Python)
2019/05/10 Javascript
Python ldap实现登录实例代码
2016/09/30 Python
详解python深浅拷贝区别
2019/06/24 Python
一行Python代码制作动态二维码的实现
2019/09/09 Python
Flask-SocketIO服务端安装及使用代码示例
2020/11/26 Python
使用HTML5和CSS3制作一个模态框的示例
2018/03/07 HTML / CSS
Europcar西班牙:全球汽车租赁领域的领导者
2018/09/17 全球购物
什么时候用assert
2015/05/08 面试题
环境工程与管理大学毕业生求职信
2013/10/02 职场文书
教师求职推荐信范文
2013/11/20 职场文书
金融学专科生自我鉴定
2014/02/21 职场文书
网站客服岗位职责
2014/04/05 职场文书
安全施工标语
2014/06/07 职场文书
食品科学与工程专业毕业生求职信范文
2014/07/21 职场文书
优秀团员事迹材料2000字
2014/08/20 职场文书
个人先进事迹材料
2014/12/29 职场文书
新员工入职欢迎词
2015/01/23 职场文书
mysql 乱码 字符集latin1转UTF8
2022/04/19 MySQL