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 相关文章推荐
详解缓存穿透击穿雪崩解决方案
May 28 Redis
详解Redis基本命令与使用场景
Jun 01 Redis
Redis 哨兵集群的实现
Jun 18 Redis
Redis缓存-序列化对象存储乱码问题的解决
Jun 21 Redis
Redis 中使用 list,streams,pub/sub 几种方式实现消息队列的问题
Mar 16 Redis
redis数据一致性的实现示例
Mar 18 Redis
Redis监控工具RedisInsight安装与使用
Mar 21 Redis
解决redis批量删除key值的问题
Mar 23 Redis
Redis唯一ID生成器的实现
Jul 07 Redis
Redis Lua脚本实现ip限流示例
Jul 15 Redis
Redis主从复制操作和配置详情
Sep 23 Redis
Redis配置外网可访问(redis远程连接不上)的方法
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
PHP也可以?成Shell Script
2006/10/09 PHP
php生成随机数或者字符串的代码
2008/09/05 PHP
thinkphp实现数组分页示例
2014/04/13 PHP
为你总结一些php信息函数
2015/10/21 PHP
javascript延时重复执行函数 lLoopRun.js
2007/06/29 Javascript
replace()方法查找字符使用示例
2013/10/28 Javascript
利用javaScript实现点击输入框弹出窗体选择信息
2013/12/11 Javascript
将查询条件的input、select清空
2014/01/14 Javascript
wap手机图片滑动切换特效无css3元素js脚本编写
2014/07/28 Javascript
javascript 动态创建表格
2015/01/08 Javascript
jQuery实现类似老虎机滚动抽奖效果
2015/08/06 Javascript
BootStrap中的table实现数据填充与分页应用小结
2016/05/26 Javascript
再次谈论Javascript中的this
2016/06/23 Javascript
全面接触神奇的Bootstrap导航条实战篇
2016/08/01 Javascript
详解微信小程序 相对定位和绝对定位
2017/05/11 Javascript
详解Node.js access_token的获取、存储及更新
2017/06/20 Javascript
解决layui前端框架 form表单,table表等内置控件不显示的问题
2018/08/19 Javascript
JS代码实现页面切换效果
2021/01/10 Javascript
Python中如何优雅的合并两个字典(dict)方法示例
2017/08/09 Python
在Python中画图(基于Jupyter notebook的魔法函数)
2019/10/28 Python
Python Print实现在输出中插入变量的例子
2019/12/25 Python
HTMl5的存储方式sessionStorage和localStorage详解
2014/03/18 HTML / CSS
谈一谈HTML5本地存储技术
2016/03/02 HTML / CSS
OPPO手机官方商城:中国手机市场出货量第一品牌
2017/10/18 全球购物
自我鉴定模板
2013/10/29 职场文书
个人自我评价和职业目标
2014/01/24 职场文书
学校庆元旦歌咏比赛主持词
2014/03/18 职场文书
禁毒宣传工作方案
2014/05/23 职场文书
企业爱岗敬业演讲稿
2014/09/04 职场文书
继承权公证书范本
2015/01/23 职场文书
入党转正介绍人意见
2015/06/03 职场文书
实习证明格式范文
2015/06/16 职场文书
大学生读书笔记大全
2015/07/01 职场文书
使用Redis实现实时排行榜功能
2021/07/02 Redis
Python matplotlib绘制条形统计图 处理多个实验多组观测值
2022/04/21 Python
python语言中pandas字符串分割str.split()函数
2022/08/05 Python