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

Spring Boot中RedisTemplate执行HMGET返回null的问题解决

问题解决:Spring Boot Redis HMGET 返回 null 数组

核心原因

你只配置了RedisTemplate顶层的key和value序列化器,但Hash类型的**字段(Hash Key)和字段值(Hash Value)**需要单独指定序列化规则。默认情况下Spring Data Redis会使用JdkSerializationRedisSerializer处理Hash的字段和值,这和你在redis-cli中存储的纯字符串格式不兼容,导致无法匹配到对应字段,最终返回[null]。

解决办法

方法一:修改RedisTemplate配置,补充Hash序列化规则

在你的RedisConfig中,为RedisTemplate添加Hash相关的序列化器配置:

@Configuration
public class RedisConfig {

    @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
        RedisTemplate<String, Object> template = new RedisTemplate<>();
        template.setConnectionFactory(redisConnectionFactory);
        StringRedisSerializer stringSerializer = new StringRedisSerializer();
        
        // 顶层Key和Value序列化
        template.setKeySerializer(stringSerializer);
        template.setValueSerializer(stringSerializer);
        
        // 关键:添加Hash类型的字段和值序列化配置
        template.setHashKeySerializer(stringSerializer);
        template.setHashValueSerializer(stringSerializer);
        
        return template;
    }
}

方法二:直接使用StringRedisTemplate(更简洁)

如果你的Redis数据都是字符串类型,优先使用StringRedisTemplate——它默认全用StringRedisSerializer序列化,无需额外配置:

修改组件类

@Component
public class RedisDemo {
    @Autowired
    private StringRedisTemplate stringRedisTemplate;

    public List<String> getHashFields(String hashKey, String... fields) {
        return stringRedisTemplate.opsForHash().multiGet(
                hashKey,
                Arrays.asList(fields)
        );
    }
}

修改控制器类(返回类型更准确)

@Autowired
private RedisDemo redisDemo;

@GetMapping("/test/{key}/{field}")
public List<String> getHashFields(@PathVariable(name = "key")String key ,@PathVariable(name = "field")String field) {
    return redisDemo.getHashFields(key, field);
}

验证

重启Spring Boot应用后,调用/test/students/andrew接口,就能得到和redis-cli一致的响应["andrew;wilson;abcSchool;900"]。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 23:16:09