如何使用带二级索引键的番石榴缓存?



每当我们希望从多个键中检索数据时,我们都会选择俯身于数据库。我有一个Class Cart,如下所示:

@Data
public class Cart {
private String cartId;
private String restaurantId;
private String userId;
@NotNull
private String deviceId;
private Map<String, Integer> items;
}

我想检索带有userId或deviceId的购物车。在RDBMS中,方法是声明deviceId(主键)和userId(唯一键),这足以让我使用其中任何一个有效地检索购物车。

是否有一个干净的方法来实现这与Guava或其他一些缓存?通过clean,我希望它是缓存中提供的第一类结构,这样我就不必在它周围编写包装器来使用。

对于Guava,最简洁的方法是使用两个缓存,一个通过deviceId查找,另一个通过userId查找。

我不知道你是否认为这足够干净,但我认为这是最好的类型安全解决方案。