MCPcopy Index your code
hub / github.com/ebean-orm/ebean / DuelCache

Class DuelCache

ebean-redis/src/main/java/io/ebean/redis/DuelCache.java:11–143  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

9import java.util.Set;
10
11public final class DuelCache implements ServerCache, NearCacheInvalidate {
12
13 private final DefaultServerCache near;
14 private final RedisCache remote;
15 private final NearCacheNotify cacheNotify;
16 private final String cacheKey;
17
18 public DuelCache(DefaultServerCache near, RedisCache remote, String cacheKey, NearCacheNotify cacheNotify) {
19 this.near = near;
20 this.remote = remote;
21 this.cacheKey = cacheKey;
22 this.cacheNotify = cacheNotify;
23 }
24
25 @Override
26 public void visit(MetricVisitor visitor) {
27 near.visit(visitor);
28 remote.visit(visitor);
29 }
30
31 @Override
32 public void invalidateKeys(Set<Object> keySet) {
33 near.removeAll(keySet);
34 }
35
36 @Override
37 public void invalidateKey(Object id) {
38 near.remove(id);
39 }
40
41 @Override
42 public void invalidateClear() {
43 near.clear();
44 }
45
46 @Override
47 public Map<Object, Object> getAll(Set<Object> keys) {
48 Map<Object, Object> resultMap = near.getAll(keys);
49 Set<Object> localKeys = resultMap.keySet();
50 Set<Object> remainingKeys = new HashSet<>();
51 for (Object key : keys) {
52 if (!localKeys.contains(key)) {
53 remainingKeys.add(key);
54 }
55 }
56 if (!remainingKeys.isEmpty()) {
57 // fetch missing ones from remote cache and merge results
58 Map<Object, Object> remoteMap = remote.getAll(remainingKeys);
59 if (!remoteMap.isEmpty()) {
60 near.putAll(remoteMap);
61 resultMap.putAll(remoteMap);
62 }
63 }
64 return resultMap;
65 }
66
67 @Override
68 public Object get(Object id) {

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…