java string可直接用redis set/get存储读取,因redis仅存二进制安全字符串且jedis/lettuce默认utf-8编码;存中文需确保java文件utf-8编码,跨语言读取也须utf-8解码;设ttl时jedis用setex,lettuce用setargs.builder.ex。

Java 中的 String 字符串可以直接用 Redis 的 set 和 get 命令存储和读取,不需要额外序列化 —— 因为 Redis 本身只存字符串(binary-safe),而 Java 的 String 经 UTF-8 编码后就是字节数组,天然适配。
用 Jedis 存取 String(最常见方式)
Jedis 是最常用的 Redis Java 客户端,操作简单直观:
- 连接 Redis 后,直接调用
jedis.set("key", "value")存字符串 - 用
jedis.get("key")取出结果,返回仍是String类型 - 注意:Jedis 默认使用 UTF-8 编码,只要 Java 字符串本身不含非法控制字符,就不会乱码
用 Lettuce(推荐用于生产环境)
Lettuce 是线程安全、支持异步和响应式的客户端,适合高并发场景:
- 同步操作:
redisSyncCommands.set("user:name", "张三") - 异步操作:
redisAsyncCommands.set("user:age", "25").thenAccept(ok -> {...}) - 它也默认按 UTF-8 处理字符串,无需手动编码/解码
存中文或特殊字符要注意什么?
绝大多数情况不用额外处理,但需确认两点:
- 确保 Java 文件编码是 UTF-8(IDE 和编译设置一致)
- Redis 服务端无需配置编码 —— 它不关心内容语义,只存字节
- 如果从其他语言(如 Python)读取,也要用 UTF-8 解码,否则可能显示为乱码
带过期时间的 set 操作
实际开发中常需要设置 TTL(生存时间),Jedis 和 Lettuce 都支持:
- Jedis:
jedis.setex("token:abc", 3600, "eyJhbGciOi...")(单位:秒) - Lettuce:
redisSyncCommands.set("config:version", "v2.1", SetArgs.Builder.ex(3600)) - 也可用
set(key, value, SetArgs)组合更多参数(如 NX、XX)
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











