Во-первых, вы уверены, что хотите написать свой собственный кеш, когда их несколько? Вещи как:
Первые два написаны на Java, а третий доступен с Java. Первые два также относятся к распределенному кешированию, что, я думаю, является общим случаем того, о чем вы просите. Когда они запускаются, они надеются подключиться к другим участникам, чтобы они поддерживали согласованный кеш между экземплярами. Изменения одного отражаются в разных случаях. Их можно настроить для подключения через многоадресную рассылку или с указанием определенных списков серверов.
Memcached, как правило, работает немного по-другому, поскольку он работает внешне по отношению к процессам Java, которые вы запускаете, так что все запускаемые экземпляры Java будут взаимодействовать с общей службой. Вы можете настроить memcached для работы в распределенном режиме, но это делается путем хеширования ключей, чтобы сервер, к которому вы хотите подключиться, мог определяться тем, что вы ищете.
Делать настоящий распределенный кеш с согласованным содержимым очень сложно, поэтому я предлагаю взглянуть на существующую библиотеку. Если вы хотите сделать это самостоятельно, все равно будет полезно посмотреть на перечисленные, чтобы увидеть, как они это делают, и рассмотреть возможность использования чего-то вроде JGroups в качестве основного механизма.