HyperLoglog Spring Key Operation - PullRequest
       6

HyperLoglog Spring Key Operation

0 голосов
/ 23 сентября 2018

У меня есть следующий фрагмент кода, чтобы проверить, могу ли я добавить значения HLL в Redis. Этот тест пройден, но когда я проверяю его из командной строки redis, я не вижу ключ "HLLTEST", вместо этого я нашел странный ключ каквы можете видеть из следующего вывода.Что-то не так с использованием HyperLogLogOperations,

@Test
    public void whenHllRecord_thenCount() throws Exception {
        hyperLogLogOperations = redisTemplate.opsForHyperLogLog();

        hyperLogLogOperations.add("HLLTEST:1010", 1);
        hyperLogLogOperations.add("HLLTEST:1010",2);

        long size = hyperLogLogOperations.size("HLLTEST:1010");

        assertEquals("Size: "+size, size, 2);
    }

Redis-Command-Line

redis:6379> keys *
 1) "\xac\xed\x00\x05t\x00\x0cHLLTEST:1010"
redis:6379> pfcount HLLTEST:1010
(integer) 0

RedisConf

 @Bean
   public RedisTemplate<String, Object> redisTemplate() {
      final RedisTemplate<String, Object> template = new RedisTemplate<String, Object>();
      template.setConnectionFactory(jedisConnectionFactory());
      template.setValueSerializer(new GenericToStringSerializer<Object>(Object.class));
      return template;
   }

1 Ответ

0 голосов
/ 23 сентября 2018

Я забыл задаться ключом сериализатора.После установки его следующим образом,

  @Bean
   public RedisTemplate<String, Object> redisTemplate() {
      final RedisTemplate<String, Object> template = new RedisTemplate<String, Object>();
      template.setConnectionFactory(jedisConnectionFactory());

     //template.setValueSerializer(new GenericToStringSerializer<Object>(Object.class));

      template.setKeySerializer(new StringRedisSerializer());
      template.setValueSerializer(new StringRedisSerializer());

      return template;
   }
...