我有来自电子商务的价格数据,像下面这样。每行都被视为一个域对象,比方说PriceInfo
+-----------+----------+-------+------------------+
| ProductId | Provider | Price | Time |
+-----------+----------+-------+------------------+
| iphone | Amazon | 200 | 13-12-2021 12:50 |
| iphone | Ebay | 201 | 13-12-2021 12:50 |
| iphone | Alibaba | 202 | 13-12-2021 12:50 |
| GalaxyX2 | Ebay | 195 | 13-12-2021 12:50 |
| GalaxyX2 | Alibaba | 196 | 13-12-2021 12:50 |
+-----------+----------+-------+------------------+客户感兴趣的是从特定供应商获得所有价格,或者从不同供应商获得单个产品的价格。
1.从Ebay获取价格
+-----------+----------+-------+------------------+
| ProductId | Provider | Price | Time |
+-----------+----------+-------+------------------+
| iphone | Ebay | 201 | 13-12-2021 12:50 |
| GalaxyX2 | Ebay | 195 | 13-12-2021 12:50 |
+-----------+----------+-------+------------------+2.获取iphone的价格
+-----------+----------+-------+------------------+
| ProductId | Provider | Price | Time |
+-----------+----------+-------+------------------+
| iphone | Amazon | 200 | 13-12-2021 12:50 |
| iphone | Ebay | 201 | 13-12-2021 12:50 |
| iphone | Alibaba | 202 | 13-12-2021 12:50 |
+-----------+----------+-------+------------------+如何定义我的Redis缓存键,如何查询数据库得到以上两个结果?
在保存pojo时,我在java spring boot项目中使用Jedis库执行以下操作:
public void save(PricingInfo pricingInfo ) {
template.opsForHash().put(HASH_KEY, pricingInfo.getProductId(), pricingInfo );
}发布于 2021-04-24 23:07:58
您可以使用RedisReposiroty来获取这些数据,在Redis存储库中,您可以将集合定义为
@RedisHash("productPrice")
public class ProductPrice implements Serializable {
@Id private String id; // assign id as productId#provider
@Indexed
private String productId;
@Indexed
private String provider;
private Double price;
private Long timestamp;
}我们在其中添加了两个索引,一个用于productId,另一个用于provider。
使用以下两种方法定义Redis存储库
@Repository
public interface ProductPriceRepository extends CrudRepository<ProductPrice, String> {
List<ProductPrice> findByProductId(String productId);
List<ProductPrice> findByProvider(String provider);
} 现在,您可以在服务中autowired ProductPriceRepository。
要保存记录,需要调用repository.save方法。
https://stackoverflow.com/questions/67242566
复制相似问题