@Override
    public boolean containsEventSet(String attribute, Compare.Operator operator, Object value) {
        if (primaryKeyData != null && attribute.equals(primaryKeyAttributes)) {
            StreamEvent foundEvent;
            switch (operator) {
                case LESS_THAN:
                    foundEvent = (StreamEvent) ((TreeMap<Object, StreamEvent>) primaryKeyData).
                            lowerKey(value);
                    if (foundEvent != null) {
                        handleCachePolicyAttributeUpdate(foundEvent);
                        return true;
                    } else {
                        return false;
                    }
                case GREATER_THAN:
                    foundEvent = (StreamEvent) ((TreeMap<Object, StreamEvent>) primaryKeyData).
                            higherKey(value);
                    if (foundEvent != null) {
                        handleCachePolicyAttributeUpdate(foundEvent);
                        return true;
                    } else {
                        return false;
                    }
                case LESS_THAN_EQUAL:
                    foundEvent = (StreamEvent) ((TreeMap<Object, StreamEvent>) primaryKeyData).
                            ceilingKey(value);
                    if (foundEvent != null) {
                        handleCachePolicyAttributeUpdate(foundEvent);
                        return true;
                    } else {
                        return false;
                    }
                case GREATER_THAN_EQUAL:
                    foundEvent = (StreamEvent) ((TreeMap<Object, StreamEvent>) primaryKeyData).
                            floorKey(value);
                    if (foundEvent != null) {
                        handleCachePolicyAttributeUpdate(foundEvent);
                        return true;
                    } else {
                        return false;
                    }
                case EQUAL:
                    foundEvent = primaryKeyData.get(value);
                    if (foundEvent != null) {
                        handleCachePolicyAttributeUpdate(foundEvent);
                        return true;
                    } else {
                        return false;
                    }
                case NOT_EQUAL:
                    return primaryKeyData.size() > 1;
            }
        } else {
            TreeMap<Object, Set<StreamEvent>> currentIndexedData = indexData.get(attribute);

            switch (operator) {

                case LESS_THAN:
                    return currentIndexedData.lowerKey(value) != null;
                case GREATER_THAN:
                    return currentIndexedData.higherKey(value) != null;
                case LESS_THAN_EQUAL:
                    return currentIndexedData.ceilingKey(value) != null;
                case GREATER_THAN_EQUAL:
                    return currentIndexedData.floorKey(value) != null;
                case EQUAL:
                    return currentIndexedData.get(value) != null;
                case NOT_EQUAL:
                    return currentIndexedData.size() > 1;
            }
        }
        throw new OperationNotSupportedException(operator + " not supported for '" + value + "' by " + getClass()
                .getName());
    }
Exgtension of IndexEventHolder that implements hook handleCachePolicyAttributeUpdate for cache usage
modules/siddhi-core/src/main/java/io/siddhi/core/table/holder/IndexEventHolderForCache.java