[英]Java Spring Boot how to set Redis cache key for multiple query string parameters on controller
[英]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.