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 Cluster 字段模糊匹配及删除
May 27 Redis
浅谈Redis主从复制以及主从复制原理
May 29 Redis
浅谈Redis中的RDB快照
Jun 29 Redis
Redis主从配置和底层实现原理解析(实战记录)
Jun 30 Redis
厉害!这是Redis可视化工具最全的横向评测
Jul 15 Redis
redis requires ruby version2.2.2的解决方案
Jul 15 Redis
关于SpringBoot 使用 Redis 分布式锁解决并发问题
Nov 17 Redis
解决 redis 无法远程连接
May 15 Redis
Redis 异步机制
May 15 Redis
Redis基本数据类型Zset有序集合常用操作
Jun 01 Redis
Redis基本数据类型List常用操作命令
Jun 01 Redis
Redis唯一ID生成器的实现
Jul 07 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制作中间带自己定义图片二维码的方法
2014/01/27 PHP
Ubuntu12下编译安装PHP5.3开发环境
2015/03/27 PHP
PHP提取字符串中的手机号正则表达式怎么写
2017/07/17 PHP
yii2.0框架数据库操作简单示例【添加,修改,删除,查询,打印等】
2020/04/13 PHP
JavaScript 学习笔记(十四) 正则表达式
2010/01/22 Javascript
基于jQuery的模仿新浪微博时间的组件
2011/10/04 Javascript
IE与Firefox在JavaScript上的7个不同句法分享
2011/10/30 Javascript
jquery实现表格奇数偶数行不同样式(有图为证及实现代码)
2013/01/23 Javascript
js跑步算法的实现代码
2013/12/04 Javascript
window resize和scroll事件的基本优化思路
2014/04/29 Javascript
JS实现可缩放、拖动、关闭和最小化的浮动窗口完整实例
2015/03/04 Javascript
Bootstrap 折叠(Collapse)插件用法实例详解
2016/06/01 Javascript
javacript获取当前屏幕大小
2016/06/04 Javascript
Bootstrap select下拉联动(jQuery cxselect)
2017/01/04 Javascript
jQuery实现的浮动层div浏览器居中显示效果
2017/02/03 Javascript
AngularJS 中ui-view传参的实例详解
2017/08/25 Javascript
jQuery实现的鼠标响应缓冲动画效果示例
2018/02/13 jQuery
详解Vue.js自定义tipOnce指令用法实例
2018/12/19 Javascript
JavaScript工具库之Lodash详解
2019/06/15 Javascript
微信小程序自定义底部弹出框动画
2020/11/18 Javascript
python每次处理固定个数的字符的方法总结
2013/01/29 Python
Python实现抓取城市的PM2.5浓度和排名
2015/03/19 Python
python如何爬取个性签名
2018/06/19 Python
基于django ManyToMany 使用的注意事项详解
2019/08/09 Python
CSS3中引入多种自定义字体font-face
2020/06/12 HTML / CSS
Html5移动端弹幕动画实现示例代码
2018/08/27 HTML / CSS
预订奥兰多和佛罗里达州公园门票:FloridaTix
2018/01/03 全球购物
英国领先的体验日提供商:Buyagift
2019/04/19 全球购物
出纳会计岗位职责
2014/03/12 职场文书
最新结婚典礼主持词
2014/03/14 职场文书
小学教师教学反思
2016/02/24 职场文书
应届毕业生的自我评价
2019/06/21 职场文书
Mybatis-plus在项目中的简单应用
2021/07/01 Java/Android
python可视化之颜色映射详解
2021/09/15 Python
mysql创建存储过程及函数详解
2021/12/04 MySQL
2021好看的国漫排行榜前十名 《完美世界》上榜,《元龙》排名第一
2022/03/18 国漫