2013-08-09 2 views
0

Я работаю над реализацией двухуровневого кэша в Java для цели обучения. У меня 2 уровня: RAM - первая, а FS - вторая. Я выбрал стратегию LRU для моей реализации и политику «обратной записи» между двумя уровнями. Возможно, вы хотите сделать объекты, хранящиеся на 2-м уровне (файловой системе), актуальными, если объект изменит свое внутреннее состояние? Это обычная практика для двухуровневого кеша?2-уровневая реализация кеша в Java

Как я могу записать свой объект (serialize) в файл в двоичной форме, если все, что я знаю об объекте, состоит в том, что объект является типом объекта? Возможно ли, или я должен сделать требование, что Object должен реализовать Serializable?

EDIT:

Собственно вопрос о внутреннем состоянии - как я могу impelment это?

+0

Вы можете использовать отражение для сериализации вашего объекта, если вы не хотите использовать 'Serializable'. –

+1

«На самом деле вопрос о ...» черт возьми. Вопрос перед вашим редактированием был около двух-трех вещей, и вы спросили **, может ли ** (не * как *) обновить кеш при изменении объекта. Не перемещайте стойки ворот по существующим вопросам - вы должны задать каждый вопрос об одной проблеме и сделать это как можно более ясным. – millimoose

+1

Во всяком случае, для целей упражнения требование иметь объекты явно «Serializable» - для целей кеша FS); и "cacheable" - излучать уведомления или устанавливать грязный флаг, когда их внутреннее состояние изменяется, так что может произойти обратная запись. Java не является ядром операционной системы, не кажется целесообразным попробовать и обучать низкоуровневые методы. (Там, где обычная операционная система, очевидно, может отслеживать любую запись в память.) – millimoose

ответ

0

Да, вы можете сказать, что нормальная практика заключается в том, чтобы кэш второго уровня в вашем приложении по крайней мере мог сказать это на основе моего опыта. Для получения дополнительной информации вы можете обратиться к спецификациям java here.

Мы также внедрили кэш второго уровня в нашем приложении для повышения производительности во всех операциях чтения базы данных. Для этого мы использовали Ehcache API, и нам было очень легко интегрироваться с Spring в нашем приложении, поскольку он работал в Spring framework.

Смежные вопросы