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 08 Redis
SpringBoot 集成Redis 过程
Jun 02 Redis
详解Redis复制原理
Jun 04 Redis
比较几种Redis集群方案
Jun 21 Redis
压缩Redis里的字符串大对象操作
Jun 23 Redis
Redis中一个String类型引发的惨案
Jul 25 Redis
Redis分布式锁Redlock的实现
Aug 07 Redis
解决linux下redis数据库overcommit_memory问题
Feb 24 Redis
面试分析分布式架构Redis热点key大Value解决方案
Mar 13 Redis
redis调用二维码时的不断刷新排查分析
Apr 01 Redis
redis sentinel监控高可用集群实现的配置步骤
Apr 01 Redis
使用Redis做预定库存缓存功能
Apr 02 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实现下载生成某链接快捷方式的解决方法
2013/05/07 PHP
php实现文件编码批量转换
2014/03/10 PHP
php自定义函数实现汉字转换utf8编码的方法
2016/09/29 PHP
可实现多表单提交的javascript函数
2007/08/01 Javascript
JS构建页面的DOM节点结构的实现代码
2011/12/09 Javascript
40个有创意的jQuery图片和内容滑动及弹出插件收藏集之三
2012/01/03 Javascript
js实现日历可获得指定日期周数及星期几示例分享(js获取星期几)
2014/03/14 Javascript
网页收藏夹显示ICO图标(代码少)
2015/08/04 Javascript
jQuery实现的仿百度分页足迹效果代码
2015/10/30 Javascript
js判断手机访问或者PC的几个例子(常用于手机跳转)
2015/12/15 Javascript
理解Javascript图片预加载
2016/02/23 Javascript
完美JQuery图片切换效果的简单实现
2016/07/21 Javascript
jQuery EasyUi 验证功能实例解析
2017/01/06 Javascript
vue2.0构建单页应用最佳实战
2017/04/01 Javascript
JavaScript实现微信号随机切换代码
2018/03/09 Javascript
使用Vue-cli 3.0搭建Vue项目的方法
2018/06/07 Javascript
在mpvue框架中使用Vant WeappUI组件库的注意事项【推进】
2019/06/09 Javascript
如何在 ant 的table中实现图片的渲染操作
2020/10/28 Javascript
python使用PyFetion来发送短信的例子
2014/04/22 Python
详解Python2.x中对Unicode编码的使用
2015/04/03 Python
Python中使用第三方库xlutils来追加写入Excel文件示例
2015/04/05 Python
python中__call__内置函数用法实例
2015/06/04 Python
Python字符串特性及常用字符串方法的简单笔记
2016/01/04 Python
python 连接sqlite及简单操作
2017/06/30 Python
python使用rpc框架gRPC的方法
2018/08/24 Python
使用python Fabric动态修改远程机器hosts的方法
2018/10/26 Python
浅析pandas 数据结构中的DataFrame
2019/10/12 Python
执行Django数据迁移时报 1091错误及解决方法
2019/10/14 Python
高中数学教学反思
2014/01/30 职场文书
体育课课后反思
2014/04/24 职场文书
办公室务虚会发言材料
2014/10/20 职场文书
2015年信访工作总结
2015/04/07 职场文书
工程技术负责人岗位职责
2015/04/13 职场文书
新郎结婚感言
2015/07/31 职场文书
Vue vee-validate插件的简单使用
2021/06/22 Vue.js
MySQL连接控制插件介绍
2021/09/25 MySQL