I'm late to the party but have you tried TayzGrid, an open source java distributed cache. Also known as in-memory data grid or key value store.
It answers all your basic needs
- Distributed
- Auto-Discovery
- Redundancy
- Non-Centralized
It also manages advanced failover scenarios like split brain and sudden restarts. All nodes are intelligent therefore completely distributed.
You also can also make a choice of which topology you want to use (Partition or replicated). If you want to use more advanced topologies(Partition of replica) then you can maybe buy a license.