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分布式锁的这些坑
May 19 Redis
Redis Cluster 字段模糊匹配及删除
May 27 Redis
Windows中Redis安装配置流程并实现远程访问功能
Jun 07 Redis
浅谈Redis中的RDB快照
Jun 29 Redis
基于Redis的List实现特价商品列表功能
Aug 30 Redis
Redis集群新增、删除节点以及动态增加内存的方法
Sep 04 Redis
Redis的字符串是如何实现的
Oct 24 Redis
redis缓存存储Session原理机制
Nov 20 Redis
解决Redis启动警告问题
Feb 24 Redis
windows安装 redis 6.2.6最新步骤详解
Apr 26 Redis
Redis入门基础常用操作命令整理
Jun 01 Redis
Redis实战之Lettuce的使用技巧详解
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
追忆往昔!浅谈收音机的百年发展历史
2021/03/01 无线电
如何选购合适的收音机
2021/03/01 无线电
How do I change MySQL timezone?
2008/03/26 PHP
删除及到期域名的查看(抢域名必备哦)
2008/05/14 PHP
探讨PHP中OO之静态关键字以及类常量的详解
2013/06/07 PHP
php的ZipArchive类用法实例
2014/10/20 PHP
PHP使用递归生成文章树
2015/04/21 PHP
php实现向javascript传递数组的方法
2015/07/27 PHP
web前端开发也需要日志
2010/12/09 Javascript
jQuery总体架构的理解分析
2011/03/07 Javascript
Javascript中正则表达式的全局匹配模式分析
2011/04/26 Javascript
JavaScript 一道字符串分解的题目
2011/08/03 Javascript
解析JavaScript中的不可见数据类型
2013/12/02 Javascript
jquery提示效果实例分析
2014/11/25 Javascript
JS实现控制表格行内容垂直对齐的方法
2015/03/30 Javascript
jquery.serialize() 函数语法及简单实例
2016/07/08 Javascript
JS返回顶部实例代码
2020/08/09 Javascript
图片懒加载imgLazyLoading.js使用详解
2020/09/15 Javascript
vue-cli脚手架搭建的项目去除eslint验证的方法
2018/09/29 Javascript
JavaScript实现简单日历效果
2020/09/11 Javascript
[01:00:44]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#1COL VS Alliance第三局
2016/03/04 DOTA
[02:37]2018DOTA2亚洲邀请赛赛前采访-EG篇
2018/04/03 DOTA
决策树的python实现方法
2014/11/18 Python
解决phantomjs截图失败,phantom.exit位置的问题
2018/05/17 Python
PyPDF2读取PDF文件内容保存到本地TXT实例
2020/05/12 Python
pytorch随机采样操作SubsetRandomSampler()
2020/07/07 Python
HTML5是什么 HTML5是什么意思 HTML5简介
2012/10/26 HTML / CSS
TALLY WEiJL法国网上商店:服装、时装及配饰
2019/08/31 全球购物
高级Java程序员面试要点
2013/08/02 面试题
电子商务应届生求职信
2013/11/16 职场文书
旅游管理专业生自荐信范文
2014/01/02 职场文书
九年级物理教学反思
2014/01/29 职场文书
促销活动计划书
2014/05/02 职场文书
学校勤俭节约倡议书
2015/04/29 职场文书
初中英语教学反思范文
2016/02/15 职场文书
redis通过6379端口无法连接服务器(redis-server.exe闪退)
2021/05/08 Redis