public static <K, V> Set<DistributedMember> getRedundantMembersForKey(final Region<K, V> r,
      final K key) {
    DistributedMember primary = getPrimaryMemberForKey(r, key);
    Set<? extends DistributedMember> owners = getAllForKey(r, key);
    if (primary != null) {
      owners.remove(primary);
    }
    return Collections.unmodifiableSet(owners);
  }
Get all potential redundant owners for a key. If the key exists in the Region, upon return
there is no guarantee that key has not been moved or that the members are still alive.

<p>
This method is not a substitute for {@link Region#containsKey(Object)}.
<p>
This method is equivalent to: <code>
 DistributedMember primary = getPrimaryMemberForKey(r, key);
 Set&lt;? extends DistributedMember&gt; allMembers = getAllMembersForKey(r, key);
 allMembers.remove(primary);
</code>
<p>

@param <K> The key type of the region
@param <V> The value type of the region
@param r a PartitionedRegion
@param key the key to evaluate
@throws IllegalStateException if the provided region is something other than a
        {@linkplain DataPolicy#PARTITION partitioned Region}
@return an unmodifiable set of members minus the primary
@since GemFire 6.0
geode-core/src/main/java/org/apache/geode/cache/partition/PartitionRegionHelper.java