Объект не сохраняется в кэше Redis - PullRequest
0 голосов
/ 06 апреля 2019

У меня есть класс User следующим образом:

@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@RedisHash("loggedInUser")
public class User implements Serializable {
    /**
     * 
     */
    private static final long serialVersionUID = -1625655374442156393L;
    @Id
    private Long userId;
    private String username;
    private String role;

}

при входе в систему я сохраняю объект repository.save(), но при извлечении данных из redis через keys * я не могу найти loggedInUser в нем. Я использую репозиторий:

@Repository
public interface AppAuthenticationRepository extends JpaRepository<User, Long> {

    LoggedInUser findByUsername(String username);
    LoggedInUser deleteByUsername(String username);

}

1 Ответ

0 голосов
/ 08 апреля 2019

У вас настроены соответствующие классы конфигурации?Например:

@Configuration
@EnableRedisRepositories
public class RedisConfig {

  @Bean
  public RedisConnectionFactory connectionFactory() {
    return new JedisConnectionFactory();
  }

  @Bean
  public RedisTemplate<?, ?> redisTemplate() {
    RedisTemplate<byte[], byte[]> template = new RedisTemplate<byte[], byte[]>();
    return template;
  }
}

После настройки конфигурации Redis ваш репозиторий может быть определен следующим образом:

@Repository
public interface AppAuthenticationRepository extends CrudRepository<LoggedInUser, Long> {
    LoggedInUser findByUsername(String username);
    LoggedInUser deleteByUsername(String username);
}

У вас также есть JpaRepository<User, Long>, но возвращается LoggedInUser.Я бы попробовал CrudRepository<LoggedInUser, Long>.

Документация Spring Data Redis содержит хороший пример использования, который также должен помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...