Рассматривали ли вы Memcached? Вы упомянули маленькие объекты конкретно: memcached отлично подходит для этого. Он распространяется и отказоустойчив, очень быстр, с открытым исходным кодом, активно используется и поддерживается везде, и имеет два великолепных клиентских API Java: Danga и Spy.
Единственное ваше требование, что memcached не соответствует, - это отсутствие компонента времени до истечения срока действия объекта. Я считаю, что максимальное количество времени, которое объект может проводить в кеше, составляет 30 дней. YMMV.