Closed
Description
argszero opened DATAREDIS-500 and commented
RedisTemplate.executePipelined
with RedisCallback
uses wrong serializer
when hashKeySerializer
is different from hashValueSerializer
.
@Test
public void testExecutePipelinedWidthDifferentHashKeySerializerAndHashValueSerializer() {
assumeTrue(redisTemplate instanceof RedisTemplate);
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setHashKeySerializer(new StringRedisSerializer());
redisTemplate.setHashValueSerializer(new GenericToStringSerializer<Long>(Long.class));
redisTemplate.opsForHash().put((K) "foo", "key", 1L);
List<Object> results = redisTemplate.executePipelined(new RedisCallback() {
public Object doInRedis(RedisConnection connection) throws DataAccessException {
connection.hGetAll(((StringRedisSerializer) redisTemplate.getKeySerializer()).serialize("foo"));
return null;
}
});
assertEquals(((Map) results.get(0)).get("key"), 1L);
}
Affects: 1.7.1 (Hopper SR1), 1.8 M1 (Ingalls)
Referenced from: pull request #190
Backported to: 1.7.3 (Hopper SR3), 1.6.5 (Gosling SR5)