笔记 笔记
首页
  • 开发工具
  • Java Web
  • Java 进阶
  • 容器化技术
  • Java 专栏

    • Java 核心技术面试精讲
    • Java 业务开发常见错误 100 例
  • 数据库专栏

    • MySQL 实战 45 讲
    • Redis 核心技术与实战
  • 安全专栏

    • OAuth 2.0 实战课
  • 计算机系统
  • 程序设计语言
  • 数据结构
  • 知识产权
  • 数据库
  • 面向对象
  • UML
  • 设计模式
  • 操作系统
  • 结构化开发
  • 软件工程
  • 计算机网络
  • 上午题错题
在线工具 (opens new window)

EasT-Duan

Java 开发
首页
  • 开发工具
  • Java Web
  • Java 进阶
  • 容器化技术
  • Java 专栏

    • Java 核心技术面试精讲
    • Java 业务开发常见错误 100 例
  • 数据库专栏

    • MySQL 实战 45 讲
    • Redis 核心技术与实战
  • 安全专栏

    • OAuth 2.0 实战课
  • 计算机系统
  • 程序设计语言
  • 数据结构
  • 知识产权
  • 数据库
  • 面向对象
  • UML
  • 设计模式
  • 操作系统
  • 结构化开发
  • 软件工程
  • 计算机网络
  • 上午题错题
在线工具 (opens new window)

购买兑换码请添加

添加时候请写好备注,否则无法通过。

  • 设计模式

  • JVM 详解

  • Linux

  • Redis

    • Redis 入门

      • NoSQL 数据库简介
      • Redis 概述安装
      • 常用五大数据类型
      • Redis 配置文件介绍
      • Redis 的发布和订阅
      • Redis 新数据类型
      • Jedis
        • Jedis所需要的jar包
        • 连接 Redis 注意事项
        • Jedis 常用操作
          • 创建测试程序
          • 测试相关数据类型
        • 实战
          • 完成一个手机验证码功能
      • Redis 与 SpringBoot 整合
    • Redis 进阶

  • 分布式锁

  • Shiro

  • Gradle

  • Java 进阶
  • Redis
  • Redis 入门
EasT-Duan
2024-08-16
目录

Jedis

欢迎来到我的 ChatGPT 中转站,极具性价比,为付费不方便的朋友提供便利,有需求的可以添加左侧 QQ 二维码,另外,邀请新用户能获取余额哦!最后说一句,那啥:请自觉遵守《生成式人工智能服务管理暂行办法》。

# Jedis 所需要的 jar 包

<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>3.2.0</version>
</dependency>
1
2
3
4
5

# 连接 Redis 注意事项

禁用 Linux 的防火墙:Linux (CentOS7) 里执行命令

systemctl stop/disable firewalld.service

redis.conf 中注释掉 bind 127.0.0.1 ,然后 protected-mode no

# Jedis 常用操作

# 创建测试程序

public class Demo01 {
    public static void main(String[] args) {
        Jedis jedis = new Jedis("192.168.25.100", 6379);
        String pong = jedis.ping();
        System.out.println("连接成功:" + pong);
        jedis.close();
    }
}
1
2
3
4
5
6
7
8

# 测试相关数据类型

public class Demo01 {
    public static void main(String[] args) {
        Jedis jedis = new Jedis("192.168.25.100", 6379);
        String pong = jedis.ping();
        System.out.println("连接成功:" + pong);
        //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);
        }

        jedis.close();
    }
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52

# 实战

# 完成一个手机验证码功能

要求:

1、输入手机号,点击发送后随机生成 6 位数字码,2 分钟有效

2、输入验证码,点击验证,返回成功或失败

3、每个手机号每天只能输入 3 次

public class SmsCode {
    public static void main(String[] args) {
        //模拟短信发送
//        sendMessage("22222");
        //验证码校验
        verifyCode("22222", "136710");
    }

    /**
     * 验证码校验
     * @param phoneNumber 手机号
     * @param code        验证码
     */
    private static void verifyCode(String phoneNumber, String code) {
        //从redis获取验证码
        //连接Redis
        Jedis jedis = new Jedis("192.168.25.100", 6379);
        //验证码key
        String codeKey = "sendMessage:" + phoneNumber + ":code";
        String redisCode = jedis.get(codeKey);
        //判断
        if (redisCode.equals(code)) {
            System.out.println("成功");
        } else {
            System.out.println("失败");
        }
        jedis.close();
    }

    /**
     * 发送短信
     * @param phoneNumber 手机号
     */
    private static void sendMessage(String phoneNumber) {
        //连接Redis
        Jedis jedis = new Jedis("192.168.25.100", 6379);
        //拼接key
        //手机发送次数key
        String countKey = "sendMessage:" + phoneNumber + ":count";
        //验证码key
        String codeKey = "sendMessage:" + phoneNumber + ":code";
        //每个手机号每天只能发送3次
        String count = jedis.get(countKey);
        if (null == count) {
            //一次也没有发过
            jedis.setex(countKey, 24 * 60 * 60, "1");
        } else if (Integer.parseInt(count) <= 2) {
            //发送次数+1
            jedis.incr(countKey);
        } else {
            //发送三次,不能再发送
            System.out.println("今天发送次数已经超过三次");
            jedis.close();
        }
        //生成验证码
        String code = getCode();
        jedis.setex(codeKey, 2 * 60, code);
        jedis.close();
    }

    //1 生成6位数字验证码
    public static String getCode() {
        Random random = new Random();
        StringBuilder code = new StringBuilder();
        for (int i = 0; i < 6; i++) {
            int rand = random.nextInt(10);
            code.append(rand);
        }
        return code.toString();
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#Redis
上次更新: 2025/04/12, 05:37:39
Redis 新数据类型
Redis 与 SpringBoot 整合

← Redis 新数据类型 Redis 与 SpringBoot 整合→

最近更新
01
Reactor 核心
02-24
02
前置条件
10-30
03
计算机网络
09-13
更多文章>
Theme by Vdoing | Copyright © 2019-2025 powered by Vdoing
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式