从 01 开始 从 01 开始
首页
  • 📚 计算机基础

    • 计算机简史
    • 数字电路
    • 计算机组成原理
    • 操作系统
    • Linux
    • 计算机网络
    • 数据库
    • 编程工具
    • 装机
  • 🎨 前端

    • Node
  • JavaSE
  • Java 高级
  • JavaEE

    • 构建、依赖管理
    • Ant
    • Maven
    • 日志框架
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • 环境管理和配置管理-科普篇
    • Servlet
  • Spring

    • Spring基础
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC

    • SpringMVC 基础
  • SpringBoot

    • SpringBoot 基础
  • Windows 使用技巧
  • 手机相关技巧
  • 最全面的输入法教程
  • 最全面的浏览器教程
  • Office
  • 图片类工具
  • 效率类工具
  • 最全面的 RSS 教程
  • 码字工具
  • 各大平台
  • 校招
  • 五险一金
  • 职场规划
  • 关于离职
  • 杂谈
  • 自媒体
  • 📖 读书

    • 读书工具
    • 走进科学
  • 🌍 英语

    • 从零开始学英语
    • 英语兔的相关视频
    • Larry 想做技术大佬的相关视频
  • 🏛️ 政治

    • 新闻合订本
    • 反腐
    • GFW
    • 404 内容
    • 审查与自我审查
    • 互联网
    • 战争
    • 读书笔记
  • 💰 经济

    • 关于税
    • 理财
  • 💪 健身

    • 睡眠
    • 皮肤
    • 口腔健康
    • 学会呼吸
    • 健身日志
  • 🏠 其他

    • 驾驶技能
    • 租房与买房
    • 厨艺
  • 电影

    • 电影推荐
  • 电视剧
  • 漫画

    • 漫画软件
    • 漫画推荐
  • 游戏

    • Steam
    • 三国杀
    • 求生之路
  • 小说
  • 关于本站
  • 关于博主
  • 打赏
  • 网站动态
  • 友人帐
  • 从零开始搭建博客
  • 搭建邮件服务器
  • 本站分享
  • 🌈 生活

    • 2022
    • 2023
    • 2024
    • 2025
  • 📇 文章索引

    • 文章分类
    • 文章归档

晓林

程序猿,自由职业者,博主,英语爱好者,健身达人
首页
  • 📚 计算机基础

    • 计算机简史
    • 数字电路
    • 计算机组成原理
    • 操作系统
    • Linux
    • 计算机网络
    • 数据库
    • 编程工具
    • 装机
  • 🎨 前端

    • Node
  • JavaSE
  • Java 高级
  • JavaEE

    • 构建、依赖管理
    • Ant
    • Maven
    • 日志框架
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • 环境管理和配置管理-科普篇
    • Servlet
  • Spring

    • Spring基础
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC

    • SpringMVC 基础
  • SpringBoot

    • SpringBoot 基础
  • Windows 使用技巧
  • 手机相关技巧
  • 最全面的输入法教程
  • 最全面的浏览器教程
  • Office
  • 图片类工具
  • 效率类工具
  • 最全面的 RSS 教程
  • 码字工具
  • 各大平台
  • 校招
  • 五险一金
  • 职场规划
  • 关于离职
  • 杂谈
  • 自媒体
  • 📖 读书

    • 读书工具
    • 走进科学
  • 🌍 英语

    • 从零开始学英语
    • 英语兔的相关视频
    • Larry 想做技术大佬的相关视频
  • 🏛️ 政治

    • 新闻合订本
    • 反腐
    • GFW
    • 404 内容
    • 审查与自我审查
    • 互联网
    • 战争
    • 读书笔记
  • 💰 经济

    • 关于税
    • 理财
  • 💪 健身

    • 睡眠
    • 皮肤
    • 口腔健康
    • 学会呼吸
    • 健身日志
  • 🏠 其他

    • 驾驶技能
    • 租房与买房
    • 厨艺
  • 电影

    • 电影推荐
  • 电视剧
  • 漫画

    • 漫画软件
    • 漫画推荐
  • 游戏

    • Steam
    • 三国杀
    • 求生之路
  • 小说
  • 关于本站
  • 关于博主
  • 打赏
  • 网站动态
  • 友人帐
  • 从零开始搭建博客
  • 搭建邮件服务器
  • 本站分享
  • 🌈 生活

    • 2022
    • 2023
    • 2024
    • 2025
  • 📇 文章索引

    • 文章分类
    • 文章归档
  • JavaSE

  • JavaSenior

  • JavaEE

  • JavaWeb

  • Spring

  • 主流框架

    • Redis

      • Redis 系列教程介绍
      • Redis 介绍
      • Redis 的安装和启停
      • Redis 操作数据
      • Redis 客户端
      • Redis 命令返回值
      • 多数据库
      • Redis 中的事务
      • Redis 中 key 的过期时间
      • Redis 持久化数据
      • Redis 的配置
      • Java 连接 Redis
        • Jedis
        • 下载依赖
        • 入门案例
        • Jedis 操作 Redis 中的数据
        • 测试类改造
      • Redis 连接池
      • Redis 搭建集群
      • Redis 中的哨兵
      • Redis 中的安全
      • 监控 Redis
      • Redis 小实验
    • Mybatis

    • Lucene

    • Elasticsearch

    • MQ

    • MyCat

    • Lombok

  • SpringMVC

  • SpringBoot

  • Java
  • 主流框架
  • Redis
2023-08-18
目录

Java 连接 Redis

# 100.Java 连接 Redis

我们可以使用 Jedis ,通过 Java 来操作 Redis。该依赖类似 JDBC 中的驱动类,使用它,Java 就可以连接 Redis 并操作了 ‍

# Jedis

Jedis 是一个 Java 操作 Redis 的工具。

Redis 提供了几十种不同编程语言的客户端库,这些库都很好地封装了 Redis 的命令,使得在程序中与 Redis 进行交互变得更容易。有些库还提供了可以将编程语言中的数据类型直接以相应的形式存储到 Redis 中(如将数组直接以列表类型存入 Redis)的简单方法,使用起来非常方便。 ‍

# 下载依赖

下载 Jedis 的 jar 包,并导入,或者用 Maven:

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

# 入门案例

操作 Redis 很简单:

  1. 获取 Redis 连接
  2. 操作 Redis
  3. 关闭 Redis 连接 ‍
package com.peterjxl;
import org.junit.Test;
import redis.clients.jedis.Jedis;


public class JedisTest {


    @Test
    public void helloJedis(){
        // 1.获取连接
        Jedis jedis = new Jedis("localhost", 6379); 

        // 2. 操作 Redis
        jedis.set("username", "peterjxl");

        // 3.关闭连接
        jedis.close();
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

在运行测试方法之前,记得先启动 Redis 服务端。运行户,我们可以通过 Redis-cli 查看,是设置成功的:

127.0.0.1:6379> get username
"peterjxl"
1
2

‍ 我们获取 Redis 连接的时候,如果使用空参构造 Jedis 对象,则默认连接的是 localhost:6379 ‍

# Jedis 操作 Redis 中的数据

接下来,我们来使用 Jedis 操作 Redis 的各类型数据。在 Jedis 中,操作各类数据的方法名,和 Redis 的命令几乎是一样的,例如 Redis 中操作 string 类型的数据,命令是 get 和 set;Jedis 中也是一样的方法名。 ‍

# 测试类改造

我们可以将 Jedis 获取连接和释放连接的方法抽取出来,并用@Before 和 @After 注解改造。

package com.peterjxl;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import redis.clients.jedis.Jedis;

public class JedisTest {
    Jedis jedis;
  
    @Before
    public void init(){
        jedis = new Jedis();
    }
  
    @After
    public void destroy(){
        jedis.close();
    }

    @Test
    public void helloJedis(){
        jedis.set("username", "peterjxl");
    }
  
}
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

# 操作字符串类型 string

存取 string 数据:set 方法、get 方法

@Test
public void jedisString(){
    jedis.set("username", "peterjxl");
    String username = jedis.get("username");
    System.out.println(username);
}
1
2
3
4
5
6

存储带有效期的数据:setex() 方法,例如存储激活码、验证码

jedis.setex("activecode", 20, "hehe");    //20 秒后自动删除该键值对
1

# 操作哈希类型 hash

Redis 中,操作 hash 的命令主要有:hset、hget、hgetAll。在 Jedis 中也是一样的:

@Test
public void jedisHash(){
    // 存储数据
    jedis.hset("user", "name", "lisi");
    jedis.hset("user", "age", "23");
    jedis.hset("user", "gender", "female");

    // 获取数据
    String name = jedis.hget("user", "name");
    System.out.println("name: " + name);

    // 获取 hash 的所有 map 中的数据
    Map<String, String> user = jedis.hgetAll("user");
    Set<String> keySet = user.keySet();
    for(String key : keySet){
        String value = user.get(key);
        System.out.println(key + " : " + value);
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

‍ 运行结果:

name: lisi
gender : female
name : lisi
age : 23
1
2
3
4

# 操作列表类型 list

list 的主要操作有:lpush / rpush,lpop / rpop,lrange start end。Jedis 中演示如下: ‍

@Test
public void jedisList(){
    // 存储数据
    jedis.lpush("myList", "a", "b", "c");   //从左开始存,结果是 cba
    jedis.rpush("myList2", "a", "b", "c");   //从右开始存,结果是 abc

    // 获取数据
    List<String> myList = jedis.lrange("myList", 0, -1);
    List<String> myList2 = jedis.lrange("myList2", 0, -1);
    System.out.println("myList: " + myList);
    System.out.println("myList2: " + myList2);

    // list 弹出数据
    String element1 = jedis.lpop("myList"); //c
    String element2 = jedis.rpop("myList"); //a
    System.out.println("element1: " + element1);
    System.out.println("element2: " + element2);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

运行结果:

myList: [c, b, a]
myList2: [a, b, c]
element1: c
element2: a
1
2
3
4

# 操作集合类型 set

和 set 相关的命令有:sadd,smembers

@Test
public void jedisSet(){
    // set 存储
    jedis.sadd("mySet","java","php","c++");

    // set 获取
    Set<String> myset = jedis.smembers("mySet");
    System.out.println(myset);
}
1
2
3
4
5
6
7
8
9

‍ 运行结果:

[c++, java, php]
1

# 操作有序集合类型 sortedset

和 sortedset 相关的命令有:zadd,zrange ‍

@Test
public void jedisSortedSet(){
    // sortedset 存储
    jedis.zadd("mySortedSet", 3, "雷姆");
    jedis.zadd("mySortedSet", 30, "拉姆");
    jedis.zadd("mySortedSet", 55, "艾米莉雅");
  
    // sortedset 获取
    Set<String> mysortedset = jedis.zrange("mySortedSet", 0, -1);
    System.out.println(mysortedset);
}
1
2
3
4
5
6
7
8
9
10
11

‍ 运行结果:

[雷姆, 拉姆, 艾米莉雅]
1
上次更新: 2025/6/3 09:31:54
Redis 的配置
Redis 连接池

← Redis 的配置 Redis 连接池→

最近更新
01
新闻合订本 2025-10
10-31
02
2025 年 10 月记
10-30
03
用 AI 批量优化思源笔记排版
10-15
更多文章>
Theme by Vdoing | Copyright © 2022-2025 | 粤 ICP 备 2022067627 号 -1 | 粤公网安备 44011302003646 号 | 点击查看十年之约
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式