You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Redisson哈希存储问题:如何避免及Redis CLI正常查看数据?

Redisson存储数据的序列化问题解决

一、在Redis CLI中正常查看数据

  • 使用带--raw参数的Redis CLI连接,执行GET命令即可直接看到原始内容:
    redis-cli --raw
    127.0.0.1:6379> GET test
    value
    
  • 若用普通Redis CLI,可通过HEX命令获取十六进制值后手动转码,但--raw是最简便的方式。
  • 最可靠的方式还是通过Redisson客户端的RBucket.get()方法读取,直接得到正确的字符串值。

二、让Redisson直接存储原始字符串(避免序列化)

Redisson默认使用JsonJacksonCodec对值进行序列化,导致Redis中存储的是二进制格式。要直接存原始字符串,可通过以下两种方式配置:

方法1:全局配置字符串编解码器

在创建Redisson配置时,全局指定StringCodec:

Config config = new Config();
config.setCodec(new StringCodec()); // 全局使用字符串编解码
config.useSingleServer()
        .setAddress("redis://127.0.0.1:6379");
RedissonClient redisson = Redisson.create(config);

RBucket<String> r = redisson.getBucket("test");
r.set("value", 1000000, TimeUnit.SECONDS);

方法2:针对单个RBucket指定编解码器

仅在获取特定RBucket时指定StringCodec,不影响其他操作:

Config config = new Config();
config.useSingleServer()
        .setAddress("redis://127.0.0.1:6379");
RedissonClient redisson = Redisson.create(config);

// 为当前Bucket指定StringCodec
RBucket<String> r = redisson.getBucket("test", StringCodec.INSTANCE);
r.set("value", 1000000, TimeUnit.SECONDS);

配置完成后,Redis中存储的就是原始字符串,直接用GET test就能看到"value"。

内容的提问来源于stack exchange,提问作者gomze

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 18:57:09