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 27 Redis
基于Redis过期事件实现订单超时取消
May 08 Redis
详解redis分布式锁的这些坑
May 19 Redis
redis哨兵常用命令和监控示例详解
May 27 Redis
详解Redis复制原理
Jun 04 Redis
Redis入门教程详解
Aug 30 Redis
Redis集群新增、删除节点以及动态增加内存的方法
Sep 04 Redis
Redis 持久化 RDB 与 AOF的执行过程
Nov 07 Redis
关于SpringBoot 使用 Redis 分布式锁解决并发问题
Nov 17 Redis
SpringBoot整合Redis入门之缓存数据的方法
Nov 17 Redis
Redis 操作多个数据库的配置的方法实现
Mar 23 Redis
python中使用redis用法详解
Dec 24 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
深入Nginx + PHP 缓存详解
2013/07/11 PHP
PHP的文件操作与算法实现的面试题示例
2015/08/10 PHP
详解PHP匿名函数与注意事项
2016/03/29 PHP
php curl常用的5个经典例子
2017/01/20 PHP
&amp;lt;script defer&amp;gt; defer 是什么意思
2009/05/10 Javascript
JQuery自适应IFrame高度(支持嵌套 兼容IE,ff,safafi,chrome)
2011/03/28 Javascript
jQuery根据纬度经度查看地图处理程序
2013/05/08 Javascript
node.js开发中使用Node Supervisor实现监测文件修改并自动重启应用
2014/11/04 Javascript
jQuery团购倒计时特效实现方法
2015/05/07 Javascript
AngularJS的表单使用详解
2015/06/17 Javascript
JavaScript函数表达式详解及实例
2017/05/05 Javascript
JS基于ES6新特性async await进行异步处理操作示例
2019/02/02 Javascript
原生JS利用transform实现banner的无限滚动示例代码
2020/06/15 Javascript
vue 基于abstract 路由模式 实现页面内嵌的示例代码
2020/12/14 Vue.js
[09:33]2015国际邀请赛第四日TOP10
2015/08/08 DOTA
Python 时间操作例子和时间格式化参数小结
2014/04/24 Python
从零学python系列之数据处理编程实例(一)
2014/05/22 Python
浅谈Python中copy()方法的使用
2015/05/21 Python
Python实现约瑟夫环问题的方法
2016/05/03 Python
Python如何实现MySQL实例初始化详解
2017/11/06 Python
使用DataFrame删除行和列的实例讲解
2018/04/08 Python
python 输入一个数n,求n个数求乘或求和的实例
2018/11/13 Python
Python面向对象实现一个对象调用另一个对象操作示例
2019/04/08 Python
PyCharm 配置远程python解释器和在本地修改服务器代码
2019/07/23 Python
Django Admin中增加导出CSV功能过程解析
2019/09/04 Python
python pygame实现滚动横版射击游戏城市之战
2019/11/25 Python
python实现吃苹果小游戏
2020/03/21 Python
浅谈keras 的抽象后端(from keras import backend as K)
2020/06/16 Python
简单的命令查看安装的python版本号
2020/08/28 Python
Python中读取文件名中的数字的实例详解
2020/12/25 Python
物业管理计划书
2014/01/10 职场文书
2014年党员学习“三严三实”思想汇报
2014/09/15 职场文书
党员查摆四风问题思想汇报
2014/10/25 职场文书
感谢信模板大全
2015/01/23 职场文书
领导欢迎词致辞
2015/01/23 职场文书
电影建国大业观后感
2015/06/01 职场文书