Кеш с несколькими ключами и чтение с одним - PullRequest
0 голосов
/ 31 октября 2018

Похоже, что это довольно распространенный случай, но пока не найдено никаких решений.

Следующий сценарий: мне нужно реализовать кеш (может быть основан, например, на гуаве или около того), который хранит объекты в памяти. Объект, который я храню, может быть идентифицирован одним из следующих:

(id)
(propA, propB, propC)

Так что это либо ID, либо комбинация из трех свойств. Теперь я, конечно, могу сохранить это в кеше с комбинированным ключом (некоторый простой класс Java или Pair):

[(id), (propA, propB, propC)] -> (object)

Пока что в этом нет ничего особенного. Моя проблема в том, что во время чтения кеша у меня есть только один из ключей. Таким образом, вычисление hashCode() для комбинированного ключа не может попасть в запись кэша.

На данный момент я имею в виду одно решение, в основном это два кэша / карты:

(propA, propB, propC) -> (id)
(id) -> (object)

Кто-нибудь знает альтернативный способ достижения этого или, может быть, даже знает о существующих реализациях для таких случаев?

Заранее спасибо.

...