簡體   English   中英

Java Spring 啟動:我如何實現一個 Redis 查詢以 2 個字段作為參數?

[英]Java Spring Boot: How do I implement a Redis Query with 2 fields as parameters?

我見過人們說它可能就像在這里一樣。

但是沒有實現,只有定義:

@Repository
public interface StudentRepository extends CrudRepository<Student, String>{
    Student findByNameAndGender(String name, Gender gender);
}

我遵循了此處使用的結構,它們具有:

public interface UserRepository {
    void save(User user);
    Map<String,User> findAll();
    User findById(String id);
    void update(User user);
    void delete(String id);
}

他們不使用CrudRepository擴展存儲庫:

extends CrudRepository<Student, String>

他們分別實現了這樣的:

@Repository
public class UserRepositoryImpl implements UserRepository {
    private RedisTemplate < String, User > redisTemplate;
    private HashOperations hashOperations; //to access Redis cache  
    
    public UserRepositoryImpl(RedisTemplate<String, User> redisTemplate) {
        this.redisTemplate = redisTemplate;
        hashOperations = redisTemplate.opsForHash();
}
@Override
public void save(User user) {
    hashOperations.put("USER", user.getId(), user);
}

...

那么你能給我一個 findByNameAndGender(String name, Gender gender) 實現的例子嗎?

我根據下面的例子實現了它。

@Data
@EqualsAndHashCode(onlyExplicitlyIncluded = true, callSuper = false)
@NoArgsConstructor
@RedisHash(value = "parameter")
public class CustomRedisParameter implements Serializable {

 private static final long serialVersionUID = 5468738363087043202L;

 @Id
 private Long id;  
 @Indexed
 private ParameterKey key;  
 @Indexed
 private Long cityId;

}

  public class RedisParameterService {

  private final RedisParameterRepository repository;
  
  @Autowired
  public RedisParameterService(RedisParameterRepository repository) {
    this.repository = repository;    
  }

  @Transactional
  public void save(CustomRedisParameter parameter) {
    repository.save(parameter);    
  }
}

    @Repository
    public interface RedisParameterRepository extends 
   CrudRepository<CustomRedisParameter, Long> { 

     Optional<CustomRedisParameter> 
      findByKeyAndCityId(ParameterKey key, Long cityId);
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM