跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Javajava

Java 及 Spring 环境下的 Redis 操作实战

基于 Jedis 客户端实现 Java 原生 Redis 连接,演示 String、List、Hash、Set 及 ZSet 数据结构的常用命令。结合 Spring Boot 环境,展示如何通过 StringRedisTemplate 简化开发流程。包含本地端口转发配置步骤,确保远程 Redis 服务的安全访问与调试,适合需要快速集成缓存功能的 Java 开发者参考。

橘子海发布于 2026/2/23更新于 2026/10/2483 浏览
Java 及 Spring 环境下的 Redis 操作实战

Java 原生环境:Jedis 连接与基础操作

在 Java 项目中直接使用 Jedis 客户端是理解 Redis 底层交互最直接的方式。它的 API 设计与 Redis 命令高度一致,适合需要精细控制或学习原理的场景。

1. 项目搭建与依赖引入

首先创建一个 Maven 项目,并在 pom.xml 中引入 Jedis 依赖。这里我们使用较稳定的 4.3.2 版本。

<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>4.3.2</version>
</dependency>

2. 网络配置与连接

如果 Redis 部署在云服务器上,直接访问可能存在安全限制。为了本地调试方便,可以通过 Xshell 等工具配置端口转发,将云服务器的 6379 端口映射到本地。

文章配图

配置完成后,访问本地 8888 端口即等同于访问远程的 6379 端口。

文章配图

此时即可建立连接并进行后续操作。

3. 数据结构常用命令演示

Jedis 提供了丰富的方法对应 Redis 的各种数据类型。下面按类型梳理核心用法。

String(字符串)

String 是最基础的数据类型,支持原子性自增、范围截取等操作。

public static void test(Jedis jedis) {
    // 清空数据库
    jedis.flushAll();
    
    System.out.println("mset 和 mget 使用");
    jedis.mset("k1", "111", "k2", , , );
    List<String> mget = jedis.mget(, , , );
    System.out.println( + mget);
    
    System.out.println();
    jedis.set(, );
       jedis.getrange(, , );
    System.out.println( + k4);
    jedis.setrange(, , );
    System.out.println( + jedis.get());
    
    System.out.println();
    jedis.append(, );
    System.out.println( + jedis.get());
    
    System.out.println();
    jedis.set(, );
    System.out.println( + jedis.incr());
    System.out.println( + jedis.decr());
}
"222"
"k3"
"333"
"k1"
"k2"
"k3"
"k4"
"mget: "
"getrange 和 setrange 使用"
"k4"
"abcdefgh"
String
k4
=
"k4"
0
4
"result: "
"k4"
0
"eeee"
"k4: "
"k4"
"append 使用"
"k4"
"aaaaaa"
"k4: "
"k4"
"incr 和 decr 使用"
"k5"
"111"
"k5: "
"k5"
"k5: "
"k5"
List(列表)

List 适用于消息队列或栈结构,支持两端插入弹出。

public static void test(Jedis jedis) {
    jedis.flushAll();
    System.out.println("lpush 和 lrange 使用");
    jedis.lpush("key", "1", "2", "3", "4", "5");
    System.out.println("key:" + jedis.lrange("key", 0, -1));
    
    System.out.println("rpush, rpop, lpop 使用");
    jedis.rpush("key2", "1", "2", "3", "4", "5");
    System.out.println("key2:" + jedis.lrange("key2", 0, -1));
    System.out.println("lpop key2:" + jedis.lpop("key2"));
    System.out.println("rpop key2:" + jedis.rpop("key2"));
    
    System.out.println("llen 使用");
    System.out.println("len key2: " + jedis.llen("key2"));
}
Hash(哈希)

Hash 适合存储对象,字段值对形式,内存占用比 String 更优。

private static void test(Jedis jedis) {
    jedis.flushAll();
    System.out.println("hset 和 hget 使用");
    HashMap<String, String> hash = new HashMap<>();
    hash.put("f2", "v2");
    hash.put("f3", "v3");
    hash.put("f4", "v4");
    jedis.hset("key", hash);
    jedis.hset("key", "f1", "v1");
    
    System.out.println("key f1: " + jedis.hget("key", "f1"));
    System.out.println("key f5: " + jedis.hget("key", "f5"));
    
    System.out.println("hexists 使用");
    Boolean result = jedis.hexists("key", "f1");
    System.out.println("key f1 result: " + result);
    
    System.out.println("hkeys 和 hvals 使用");
    Set<String> hkeys = jedis.hkeys("key");
    System.out.println("hkeys: " + hkeys);
    List<String> hvals = jedis.hvals("key");
    System.out.println("hvals: " + hvals);
    
    System.out.println("hdel 使用");
    jedis.hdel("key", "f1");
    result = jedis.hexists("key", "f1");
    System.out.println("key f1 result: " + result);
    
    System.out.println("hmset 和 hmget 使用");
    List<String> hmget = jedis.hmget("key", "f1", "f2", "f3");
    System.out.println("hmget key: " + hmget);
}
Set(集合)

Set 是无序且唯一的集合,常用于去重或交集运算。

public static void test(Jedis jedis) {
    jedis.flushAll();
    System.out.println("sadd 和 smembers 使用");
    jedis.sadd("key", "a", "b", "c", "d");
    Set<String> smembers = jedis.smembers("key");
    System.out.println("key: " + smembers);
    
    System.out.println("sismember, scard, spop 使用");
    boolean result = jedis.sismember("key", "a");
    System.out.println("result: " + result);
    long len = jedis.scard("key");
    System.out.println("key len: " + len);
    jedis.spop("key");
    System.out.println("key len: " + jedis.scard("key"));
    
    System.out.println("sinter 和 sinterstore");
    jedis.sadd("key2", "1", "2", "3", "4", "5");
    jedis.sadd("key3", "3", "4", "5", "6", "7");
    System.out.println("[key2 key3]sinter: " + jedis.sinter("key2", "key3"));
    long sinterstore = jedis.sinterstore("key4", "key2", "key3");
    System.out.println("sinterstore: " + sinterstore);
    System.out.println("key4: " + jedis.smembers("key4"));
}
ZSet(有序集合)

ZSet 带分数排序,适合排行榜场景。

public static void test(Jedis jedis) {
    jedis.flushAll();
    System.out.println("zadd 和 zrange 使用");
    jedis.zadd("key", 10.0, "zhangsan");
    Map<String, Double> hash = new HashMap<>();
    hash.put("lisi", 20.0);
    hash.put("wangwu", 30.0);
    jedis.zadd("key", hash);
    
    List<String> members = jedis.zrange("key", 0, -1);
    System.out.println("members: " + members);
    List<Tuple> key = jedis.zrangeWithScores("key", 0, -1);
    System.out.println("key: " + key);
    
    System.out.println("zcard, zscore 使用");
    long len = jedis.zcard("key");
    System.out.println("len key: " + len);
    Double score = jedis.zscore("key", "zhangsan");
    System.out.println("score: " + score);
    
    System.out.println("zrem, zrank 使用");
    Long zrank = jedis.zrank("key", "lisi");
    System.out.println("lisi rank: " + zrank);
    jedis.zrem("key", "zhangsan");
    System.out.println("lisi rank: " + jedis.zrank("key", "lisi"));
}

Spring 环境集成

在 Spring Boot 项目中,通常不需要手动管理连接池,框架会自动处理。

1. 创建项目

启动 Spring Initializr 时,勾选 Spring Data Redis 依赖即可。

文章配图

文章配图

2. 使用 StringRedisTemplate

通过依赖注入获取 StringRedisTemplate 实例,它封装了序列化逻辑,操作方式与 Jedis 类似但更简洁。

文章配图

建议将 Redis 操作封装为独立的服务类,便于维护。

文章配图

整体命令逻辑与原生 Jedis 基本一致,但在 Spring 环境下能更好地结合事务管理和配置中心。

目录

  1. Java 原生环境:Jedis 连接与基础操作
  2. 1. 项目搭建与依赖引入
  3. 2. 网络配置与连接
  4. 3. 数据结构常用命令演示
  5. String(字符串)
  6. List(列表)
  7. Hash(哈希)
  8. Set(集合)
  9. ZSet(有序集合)
  10. Spring 环境集成
  11. 1. 创建项目
  12. 2. 使用 StringRedisTemplate

更多推荐文章

查看全部
  • Docker Hello-World 镜像拉取失败或超时问题排查与解决
  • Vheer:免费不限次的 AI 生图与视频生成工具评测
  • Python 机器学习:基于逻辑回归和决策树的寿险续保预测
  • Python 集成 RocketMQ 生产消费全流程实战
  • Vercel agent-browser 深度解析:AI 驱动浏览器自动化实践
  • C 语言初阶算法习题实战解析
  • Cursor 中 MCP 服务配置与使用指南
  • python-can 模块使用记录
  • NISP 证书含金量深度解析与报考指南
  • 基于 Higress 网关将 REST API 转换为 MCP Server 工具
  • 基于 Netty 的轻量斗地主服务器部署与内网穿透方案
  • OpenClaw 对接飞书机器人:消息无响应与 Gateway 断连排查
  • 《AI 赋能:AI 重新定义产品经理》书籍核心内容梳理
  • 面向前端开发者的 Claude Code、Codex 与 OpenClaw 共享插件方案
  • Java Map 和 Set 数据结构详解
  • Python 学习路线:从入门到精通的完整指南
  • Arduino BLDC 自主巡逻机器人:避障与路径规划实战
  • 端侧全模态大模型 Megrez-3B-Omni 实测与部署指南
  • Linux 命令行趣味工具集锦
  • 荣耀 MWC 2026 发布 Robot Phone 与人形机器人,探索 AI 硬件生态

相关免费在线工具

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online