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 24 Redis
redis 查看所有的key方式
May 07 Redis
redis实现排行榜功能
May 24 Redis
浅谈Redis主从复制以及主从复制原理
May 29 Redis
在redisCluster中模糊获取key方式
Jul 09 Redis
Redis性能监控的实现
Jul 09 Redis
Redis集群新增、删除节点以及动态增加内存的方法
Sep 04 Redis
为什么RedisCluster设计成16384个槽
Sep 25 Redis
基于Redis结合SpringBoot的秒杀案例详解
Oct 05 Redis
redis数据一致性的实现示例
Mar 18 Redis
redis调用二维码时的不断刷新排查分析
Apr 01 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
PHP中uploaded_files函数使用方法详解
2011/03/09 PHP
php缩小png图片不损失透明色的解决方法
2013/12/25 PHP
Codeigniter框架实现获取分页数据和总条数的方法
2014/12/05 PHP
THINKPHP支持YAML配置文件的设置方法
2015/03/17 PHP
Windows下编译PHP5.4和xdebug全记录
2015/04/03 PHP
PHP简单判断字符串是否包含另一个字符串的方法
2016/03/25 PHP
php微信开发之自定义菜单完整流程
2016/10/08 PHP
php提取微信账单的有效信息
2018/10/01 PHP
laravel框架模型中非静态方法也能静态调用的原理分析
2019/11/23 PHP
javascript 类型判断代码分析
2010/03/28 Javascript
超轻量级的基于jquery的三级展开列表
2011/04/26 Javascript
Jquery中扩展方法extend使用技巧
2014/08/24 Javascript
Boostrap基础教程之JavaScript插件篇
2016/09/08 Javascript
vue页面加载闪烁问题的解决方法
2018/03/28 Javascript
如何在微信小程序里面退出小程序的方法
2019/04/28 Javascript
js getBoundingClientRect使用方法详解
2019/07/17 Javascript
JavaScript写个贪吃蛇小游戏(超详细)
2020/03/17 Javascript
Python实现去除代码前行号的方法
2015/03/10 Python
用Python解析XML的几种常见方法的介绍
2015/04/09 Python
Python实现Youku视频批量下载功能
2017/03/14 Python
PyQt5每天必学之QSplitter实现窗口分隔
2018/04/19 Python
使用Selenium破解新浪微博的四宫格验证码
2018/10/19 Python
Python面向对象原理与基础语法详解
2020/01/02 Python
解决pip安装的第三方包在PyCharm无法导入的问题
2020/10/15 Python
pandas按照列的值排序(某一列或者多列)
2020/12/13 Python
美国家庭鞋店:Shoe Sensation
2019/09/27 全球购物
精神文明建设标语
2014/06/16 职场文书
项目合作协议书
2014/09/23 职场文书
教师党员批评与自我批评发言稿
2014/10/15 职场文书
业务内勤岗位职责
2015/04/13 职场文书
担保公司2015年终工作总结
2015/10/14 职场文书
学生会2016感恩节活动小结
2016/04/01 职场文书
css3 filter属性的使用简介
2021/03/31 HTML / CSS
mysql多表查询-笔记七
2021/04/05 MySQL
python自动化测试通过日志3分钟定位bug
2021/11/20 Python
mysql使用instr达到in(字符串)的效果
2022/04/03 MySQL