红 \color{#FF0000}{红} 红
橙 \color{#FF7D00}{橙} 橙
黄 \color{#FFFF00}{黄} 黄
绿 \color{#00FF00}{绿} 绿
一、场景
两个服务A和B使用同一个redis cluster,
服务A使用redisTemplate 将key和value set进去
服务B使用redisTemplate get key
发现服务B在get key为null
二、原因
服务A中使用的是spring data redis默认的redisTemplate
而服务B中自定义了redisTemplate Bean,override了spring data redis默认的redisTemplate先看服务A使用的默认的RedisTemplate的情况通过这个类的说明,可以看到
By default, it uses Java serialization for its objects (through {@link JdkSerializationRedisSerializer}* ). For String intensive operations consider the dedicated {@link StringRedisTemplate}.
这就是问题所在,默认其会使用JdkSerializationRedisSerializer
通过redis-cli可以看到其key为
“\xac\xed\x00\x05t\x00\x13user:authcode:11111”
如果我get的时候仍然使用JdkSerializationRedisSerializer,那么是可以正常get的
服务B的情况
RedisSerializer stringRedisSer