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

Java 及 Spring 环境下 Redis 操作详解

在 Java 原生环境和 Spring 框架下操作 Redis 的方法。内容包括 Maven 依赖引入、Jedis 客户端的基本使用(String、List、Hash、Set、ZSet 类型),以及通过 XShell 配置端口转发实现本地连接。Spring 部分展示了如何集成 Spring Data Redis 并使用 StringRedisTemplate 进行数据操作。提供了具体的代码示例和常用命令说明。

清酒独酌发布于 2026/3/28更新于 2026/9/1073 浏览
Java 及 Spring 环境下 Redis 操作详解

Java 环境配置

1. 创建 Maven 项目

2. 导入依赖

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

此处使用的是 Jedis(提供的 API 和 Redis 命令高度一致)。

3. 配置端口转发

为了本地调试方便,将云服务器的 Redis 端口映射到本地主机中。在 XShell 中配置端口转发规则,访问本地的 8888 端口即相当于访问对应服务器的 6379 端口。

二、基础命令示例

通用操作
public static void test(Jedis jedis) {
    System.out.println("set 和 get 使用");
    // 清空数据库
    jedis.flushAll();
    jedis.set("key", "k1");
    jedis.set("key2", "k2");
    jedis.set("key3", "k3");
    String key = jedis.get("key");
    String key2 = jedis.get("key2");
    String key3 = jedis.get("key3");
    System.out.println("key: " + key);
    System.out.println("key2: " + key2);
    System.out.println("key3: " + key3);
    System.out.println("exists 和 del 使用");
    boolean result = jedis.exists("key");
    System.out.println("result:" + result);
    result = jedis.exists();
    System.out.println( + result);
       jedis.del(, );
    result = jedis.exists();
    System.out.println( + result);
    System.out.println();
    jedis.set(, );
    jedis.set(, );
    Set<String> keys = jedis.keys();
    System.out.println( + keys);
    System.out.println();
    jedis.set(, );
    jedis.expire(, );
    
     {
        Thread.sleep();
    }  (InterruptedException e) {
          (e);
    }
       jedis.ttl();
    System.out.println( + ttl);
    System.out.println();
    jedis.flushAll();
    jedis.set(, );
       jedis.type();
    System.out.println( + type);
    jedis.lpush(, , , );
    type = jedis.type();
    System.out.println( + type);
    jedis.sadd(, , , );
    type = jedis.type();
    System.out.println( + type);
    jedis.zadd(, , );
    type = jedis.type();
    System.out.println( + type);
    jedis.hset(, , );
    type = jedis.type();
    System.out.println( + type);
}
"key1111"
"result:"
long
del
=
"key"
"key2"
"key"
"result:"
"keys 使用"
"key"
"k1"
"key2"
"k2"
"*"
"keys: "
"expire 和 ttl 使用"
"key4"
"k4"
"key4"
10
// 休眠 5s
try
5000
catch
throw
new
RuntimeException
long
ttl
=
"key4"
"ttl: "
"type 使用"
"String"
"1"
String
type
=
"String"
"type: "
"list"
"111"
"222"
"333"
"list"
"type: "
"set"
"a"
"b"
"c"
"set"
"type: "
"zset"
1.0
"zhangsan"
"zset"
"type: "
"hash"
"f1"
"v1"
"hash"
"type: "
String 类型
public static void test(Jedis jedis) {
    // 清空数据库
    jedis.flushAll();
    System.out.println("mset 和 mget 使用");
    jedis.mset("k1", "111", "k2", "222", "k3", "333");
    List<String> mget = jedis.mget("k1", "k2", "k3", "k4");
    System.out.println("mget: " + mget);
    System.out.println("getrange 和 setrange 使用");
    jedis.set("k4", "abcdefgh");
    String k4 = jedis.getrange("k4", 0, 4);
    System.out.println("result: " + k4);
    jedis.setrange("k4", 0, "eeee");
    System.out.println("k4: " + jedis.get("k4"));
    System.out.println("append 使用");
    jedis.append("k4", "aaaaaa");
    System.out.println("k4: " + jedis.get("k4"));
    System.out.println("incr 和 decr 使用");
    jedis.set("k5", "111");
    System.out.println("k5: " + jedis.incr("k5"));
    System.out.println("k5: " + jedis.decr("k5"));
}
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 类型
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);
    result = jedis.hexists("key", "f5");
    System.out.println("key f5 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 类型
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 类型
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 项目时勾选 Spring Data Redis 依赖。 通过注入 StringRedisTemplate 操作 Redis,功能与 Jedis 类似。 建议将操作 Redis 的方法按业务类别分类组织,便于维护。 大部分命令逻辑与上述 Jedis 操作保持一致。

目录

  1. Java 环境配置
  2. 1. 创建 Maven 项目
  3. 2. 导入依赖
  4. 3. 配置端口转发
  5. 二、基础命令示例
  6. 通用操作
  7. String 类型
  8. List 类型
  9. Hash 类型
  10. Set 类型
  11. ZSet 类型
  12. Spring 环境集成

更多推荐文章

查看全部
  • 网络层:IP 协议、NAT 技术与 ICMP 协议详解
  • Spring Boot 与 Vue 实现 WebSocket 实时匹配系统
  • C++ 手撕 Sqrt 开根号算法详解与源码实现
  • Python 数据分析实战:分类分析与决策树实现
  • GLM-4.7-Flash 低代码集成 AI 能力 API 对接实践
  • AI 时代产品核心功能落地全流程管控方法
  • Spring AI 1.1.0 基础使用:构建智能应用实战
  • OpenClaw 配置 Codex 5.3 个人 AI 编程方案实战
  • C++ 深入理解虚函数、虚基类与多态
  • 自然语言处理(NLP)在客户服务中的应用与实战
  • AI 大模型助力专利翻译,妙算翻译亮相国际论坛
  • GitHub 私有仓库服务器 SSH 密钥部署指南
  • 深度学习模型部署与生产环境实践
  • AI 深度观察:GTC 开幕、Agent 工程化与具身智能新进展
  • 链表应用实战:从内存管理到缓存淘汰
  • MySQL 可视化管理工具推荐
  • C++ 类和对象(中):默认成员函数详解
  • 适合初学者的 5 个 Python 免费学习网站推荐
  • OpenClaw 飞书接入指南:无需服务器通过长连接运行机器人
  • C++11 核心特性:可变参数模板、Lambda 与线程库

相关免费在线工具

  • 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