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 11 Redis
为Java项目添加Redis缓存的方法
May 18 Redis
浅谈redis缓存在项目中的使用
May 20 Redis
分布式锁为什么要选择Zookeeper而不是Redis?看完这篇你就明白了
May 21 Redis
Redis高级数据类型Hyperloglog、Bitmap的使用
May 24 Redis
Redis主从配置和底层实现原理解析(实战记录)
Jun 30 Redis
浅谈redis整数集为什么不能降级
Jul 25 Redis
redis中lua脚本使用教程
Nov 01 Redis
分布式Redis Cluster集群搭建与Redis基本用法
Feb 24 Redis
解决redis批量删除key值的问题
Mar 23 Redis
Redis 哨兵机制及配置实现
Mar 25 Redis
Redis基本数据类型哈希Hash常用操作命令
Jun 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
常用表单验证类,有了这个,一般的验证就都齐了。
2006/12/06 PHP
PHP实现格式化文件数据大小显示的方法
2015/01/03 PHP
PHP魔术方法之__call与__callStatic使用方法
2017/07/23 PHP
解决form中action属性后面?传递参数 获取不到的问题
2017/07/21 PHP
laravel框架中间件 except 和 only 的用法示例
2019/07/12 PHP
jquery 获取json数据实现代码
2009/04/27 Javascript
jquery插件制作简单示例说明
2012/02/03 Javascript
jqGrid随窗口大小变化自适应大小的示例代码
2013/12/28 Javascript
jQuery实现锚点scoll效果实例分析
2015/03/10 Javascript
JQuery自动触发事件的方法
2015/06/13 Javascript
JQuery点击行tr实现checkBox选中的简单实例
2016/05/26 Javascript
vuejs响应用户事件(如点击事件)
2017/03/14 Javascript
基于angular实现三级联动的生日插件
2017/05/12 Javascript
详解vue项目构建与实战
2017/06/27 Javascript
bootstrap3-dialog-master模态框使用详解
2017/08/22 Javascript
js 发布订阅模式的实例讲解
2017/09/10 Javascript
js生成word中图片处理方法
2018/01/06 Javascript
微信小程序如何再次获取用户授权的方法
2019/05/10 Javascript
Vue实战教程之仿肯德基宅急送App
2019/07/19 Javascript
layui table复选框禁止某几条勾选的实例
2019/09/20 Javascript
在Koa.js中实现文件上传的接口功能
2019/10/08 Javascript
[01:18]DOTA2超级联赛专访hanci ForLove淘汰感言曝光
2013/06/04 DOTA
[01:45]IMBATV TI4前线报道-选手到达
2014/07/07 DOTA
[49:08]Secret vs VP 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
用map函数来完成Python并行任务的简单示例
2015/04/02 Python
Python的Bottle框架的一些使用技巧介绍
2015/04/08 Python
使用Python构建Hopfield网络的教程
2015/04/14 Python
python矩阵转换为一维数组的实例
2018/06/05 Python
解决Jupyter Notebook使用parser.parse_args出现错误问题
2020/04/20 Python
Python 连接 MySQL 的几种方法
2020/09/09 Python
将SVG图引入到HTML页面的实现
2019/09/20 HTML / CSS
印度尼西亚手表和包包商店:Urban Icon
2019/12/12 全球购物
汽车维修专业个人求职信范文
2014/01/01 职场文书
会计自我鉴定
2014/02/04 职场文书
2015年党性分析材料
2014/12/19 职场文书
Java死锁的排查
2022/05/11 Java/Android