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 查看所有的key方式
May 07 Redis
redis通过6379端口无法连接服务器(redis-server.exe闪退)
May 08 Redis
详解Redis主从复制实践
May 19 Redis
分布式锁为什么要选择Zookeeper而不是Redis?看完这篇你就明白了
May 21 Redis
浅谈Redis的几个过期策略
May 27 Redis
Redis如何实现分布式锁
Aug 23 Redis
Redis集群新增、删除节点以及动态增加内存的方法
Sep 04 Redis
Redis RDB技术底层原理详解
Sep 04 Redis
Redis模仿手机验证码发送的实现示例
Nov 02 Redis
解决Redis启动警告问题
Feb 24 Redis
Redis高并发缓存架构性能优化
May 15 Redis
基于Redission的分布式锁实战
Aug 14 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编写和读取XML的几种方式
2013/01/12 PHP
PHP实现多关键字加亮功能
2016/10/21 PHP
深入理解PHP的远程多会话调试
2017/09/21 PHP
js滚动条多种样式,推荐
2007/02/05 Javascript
jquery png 透明解决方案(推荐)
2010/08/21 Javascript
js异常捕获方法介绍
2013/04/10 Javascript
浅析JavaScript中的隐式类型转换
2013/12/05 Javascript
jQuery+css实现百度百科的页面导航效果
2014/12/16 Javascript
jQuery中DOM树操作之使用反向插入方法实例分析
2015/01/23 Javascript
jquery 中ajax执行的优先级
2015/06/22 Javascript
js实现对table的增加行和删除行的操作方法
2016/10/13 Javascript
PHP捕捉异常中断的方法
2016/10/24 Javascript
js生成随机颜色方法代码分享(三种)
2016/12/29 Javascript
bootstrap select插件封装成Vue2.0组件
2017/04/17 Javascript
JavaScript与Java正则表达式写法的区别介绍
2017/08/15 Javascript
JavaScript 中Date对象的格式化代码方法汇总
2017/09/06 Javascript
基于模板引擎Jade的应用(详解)
2017/12/12 Javascript
JS文件中加载jquery.js的实例代码
2018/05/05 jQuery
JS与jQuery实现ListBox上移,下移,左移,右移操作功能示例
2018/05/31 jQuery
详解如何在你的Vue项目配置vux
2018/06/04 Javascript
Cocos2d实现刮刮卡效果
2018/12/20 Javascript
JS中创建自定义类型的常用模式总结【工厂模式,构造函数模式,原型模式,动态原型模式等】
2019/01/19 Javascript
vue模式history下在iis中配置流程
2019/04/17 Javascript
Vue3.0中的monorepo管理模式的实现
2019/10/14 Javascript
微信小程序indexOf的替换方法(推荐)
2020/01/14 Javascript
vue接通后端api以及部署到服务器操作
2020/08/13 Javascript
解决vue打包报错Unexpected token: punc的问题
2020/10/24 Javascript
vue+elementUI中表格高亮或字体颜色改变操作
2020/11/02 Javascript
python简单商城购物车实例代码
2018/03/15 Python
tensorflow: 查看 tensor详细数值方法
2018/06/13 Python
Python 实现将数组/矩阵转换成Image类
2020/01/09 Python
美国正宗设计师眼镜在线零售商:EYEZZ
2019/03/23 全球购物
大学生职业生涯规划范文
2014/01/22 职场文书
《石榴》教学反思
2014/03/02 职场文书
元旦联欢晚会主持词
2015/07/01 职场文书
医院感染管理制度
2015/08/05 职场文书