private Object tryHandleReference0(Object o) { if (o instanceof RedissonReference) { return fromReference(o); } else if (o instanceof ScoredEntry && ((ScoredEntry) o).getValue() instanceof RedissonReference) { ScoredEntry<?> se = ((ScoredEntry<?>) o); return new ScoredEntry(se.getScore(), fromReference(se.getValue())); } else if (o instanceof Map.Entry) { Map.Entry old = (Map.Entry) o; Object key = tryHandleReference0(old.getKey()); Object value = tryHandleReference0(old.getValue()); return value != old.getValue() || key != old.getKey() ? new AbstractMap.SimpleEntry(key, value) : o; } else { return o; } }
public static Iterator<ScoredEntry<GeoWaveRedisPersistedRow>> groupByRow( final Iterator<ScoredEntry<GeoWaveRedisPersistedRow>> result, final boolean sortByTime) { final ListMultimap<Pair<Double, ByteArray>, ScoredEntry<GeoWaveRedisPersistedRow>> multimap = MultimapBuilder.hashKeys().arrayListValues().build(); result.forEachRemaining( r -> multimap.put(Pair.of(r.getScore(), new ByteArray(r.getValue().getDataId())), r)); if (sortByTime) { multimap.asMap().forEach( (k, v) -> Collections.sort( (List<ScoredEntry<GeoWaveRedisPersistedRow>>) v, TIMESTAMP_COMPARATOR)); } return multimap.values().iterator(); }
public Set<K> keys() { Set<K> set = new HashSet<>(); List<ScoredEntry<K>> keys = (List<ScoredEntry<K>>) cacheKeys.entryRange(new Date().getTime(), false, Double.MAX_VALUE, true); for (ScoredEntry<K> entry : keys) { set.add(entry.getValue()); } return set; }
@Override public List<ScoredEntry<T>> decode(List<Object> parts, State state) { List<ScoredEntry<T>> result = new ArrayList<ScoredEntry<T>>(); for (int i = 0; i < parts.size(); i += 2) { result.add(new ScoredEntry<T>(((Number)parts.get(i+1)).doubleValue(), (T)parts.get(i))); } return result; }
private Iterator<T> transformAndFilter( final Iterator<ScoredEntry<GeoWaveRedisPersistedRow>> result) { final Iterator<GeoWaveRow> iterator = Iterators.filter( Iterators.transform( groupByRowAndSortByTimePair.getLeft() ? RedisUtils.groupByRow(result, groupByRowAndSortByTimePair.getRight()) : result, entry -> new GeoWaveRedisRow( entry.getValue(), adapterId, entry.getValue().getPartitionKey(), RedisUtils.getSortKey(entry.getScore()))), filter); return rowTransformer.apply( sortByKeyIfRequired( isSortFinalResultsBySortKey, rowMerging ? new GeoWaveRowMergingIterator(iterator) : iterator)); }
@Override public ScoredEntry<GeoWaveRedisPersistedRow> next() { final ScoredEntry<GeoWaveRedisPersistedRow> retVal = iteratorDelegate.next(); if (retVal != null) { retVal.getValue().setPartitionKey(partitionKey); } return retVal; } }
@Override public List<ScoredEntry<T>> decode(List<Object> parts, State state) { List<ScoredEntry<T>> result = new ArrayList<ScoredEntry<T>>(); for (int i = 0; i < parts.size(); i += 2) { result.add(new ScoredEntry<T>(((Number)parts.get(i+1)).doubleValue(), (T)parts.get(i))); } return result; }
private Object tryHandleReference0(Object o) { if (o instanceof RedissonReference) { return fromReference(o); } else if (o instanceof ScoredEntry && ((ScoredEntry) o).getValue() instanceof RedissonReference) { ScoredEntry<?> se = ((ScoredEntry<?>) o); return new ScoredEntry(se.getScore(), fromReference(se.getValue())); } else if (o instanceof Map.Entry) { Map.Entry old = (Map.Entry) o; Object key = tryHandleReference0(old.getKey()); Object value = tryHandleReference0(old.getValue()); return value != old.getValue() || key != old.getKey() ? new AbstractMap.SimpleEntry(key, value) : o; } else { return o; } }
public void clearSession() { RScoredSortedSet<String> sessionKeys = redisSessionDAO.getSessionKeys(); List<ScoredEntry<String>> keys = (List<ScoredEntry<String>>) sessionKeys.entryRange(0, false, new Date().getTime(), true); List<String> destroyKeys = new ArrayList<>(); for (ScoredEntry<String> key : keys) { destroyKeys.add(key.getValue()); } if (destroyKeys.size() > 0) { sessionKeys.removeAll(destroyKeys); } }
@Override public List<ScoredEntry<T>> decode(List<Object> parts, State state) { List<ScoredEntry<T>> result = new ArrayList<ScoredEntry<T>>(); for (int i = 0; i < parts.size(); i += 2) { result.add(new ScoredEntry<T>(((Number)parts.get(i+1)).doubleValue(), (T)parts.get(i))); } return result; }
private Object tryHandleReference0(Object o) { if (o instanceof RedissonReference) { return fromReference(o); } else if (o instanceof ScoredEntry && ((ScoredEntry) o).getValue() instanceof RedissonReference) { ScoredEntry<?> se = ((ScoredEntry<?>) o); return new ScoredEntry(se.getScore(), fromReference(se.getValue())); } else if (o instanceof Map.Entry) { Map.Entry old = (Map.Entry) o; Object key = tryHandleReference0(old.getKey()); Object value = tryHandleReference0(old.getValue()); return value != old.getValue() || key != old.getKey() ? new AbstractMap.SimpleEntry(key, value) : o; } else { return o; } }
public Collection<V> values() { List<ScoredEntry<K>> keys = (List<ScoredEntry<K>>) cacheKeys.entryRange(new Date().getTime(), false, Double.MAX_VALUE, true); List<V> values = new ArrayList<>(keys.size()); for (ScoredEntry<K> key : keys) { RBucket<V> v = redisCacheManager.getRedissonClient().getBucket(getRedisCacheKey(key.getValue())); V value = v.get(); if (value != null) { values.add(value); } } return Collections.unmodifiableList(values); }
@Override public int compare( final ScoredEntry<GeoWaveRedisPersistedRow> o1, final ScoredEntry<GeoWaveRedisPersistedRow> o2) { final GeoWaveRedisPersistedTimestampRow row1 = (GeoWaveRedisPersistedTimestampRow) o1.getValue(); final GeoWaveRedisPersistedTimestampRow row2 = (GeoWaveRedisPersistedTimestampRow) o2.getValue(); // we are purposely reversing the order because we want it to be // sorted from most recent to least recent final int compare = Long.compare(row2.getSecondsSinceEpic(), row1.getSecondsSinceEpic()); if (compare != 0) { return compare; } return Integer.compare(row2.getNanoOfSecond(), row1.getNanoOfSecond()); } }
public void clearCache() { ConcurrentMap<String, Cache> caches = redisSessionDAO.getRedisCacheManager().getCaches(); caches.forEach((k, v) -> { RedisCache redisCache = (RedisCache) v; RScoredSortedSet cacheKeys = redisCache.getCacheKeys(); List<ScoredEntry> keys = (List<ScoredEntry>) cacheKeys.entryRange(0, false, new Date().getTime(), true); List<Object> destroyKeys = new ArrayList<>(); for (ScoredEntry key : keys) { destroyKeys.add(key.getValue()); } cacheKeys.removeAll(destroyKeys); }); }
public Collection<Session> getActiveSessions() { Assert.notNull(redisCacheManager, "redisCacheManager is no null"); // 获取存活的session List<ScoredEntry<String>> keys = (List<ScoredEntry<String>>) sessionKeys.entryRange(new Date().getTime(), false, Double.MAX_VALUE, true); List<Session> values = new ArrayList<>(keys.size()); for (ScoredEntry<String> key : keys) { RBucket<SessionWrapper> v = redisCacheManager.getRedissonClient().getBucket(getRedisSessionKey(key.getValue()), codec); SessionWrapper sessionWrapper = v.get(); if (sessionWrapper != null) { values.add(sessionWrapper.getSession()); } } return Collections.unmodifiableList(values); }
} else { try { result.forEach(i -> i.getValue().setPartitionKey(r.partitionKey)); transformAndFilter(result.iterator()).forEachRemaining(row -> { try {