@@ -43,15 +43,17 @@ class RedisCache implements ServerCache {
4343 this .keyEncode = keyEncode ;
4444 this .valueEncode = valueEncode ;
4545
46- String prefix = "ebean.l2cache." + cacheKey ;
47-
48- metricGet = MetricFactory .get ().createTimedMetric (MetricType .L2 , prefix + ".get" );
49- metricGetAll = MetricFactory .get ().createTimedMetric (MetricType .L2 , prefix + ".getAll" );
50- metricPut = MetricFactory .get ().createTimedMetric (MetricType .L2 , prefix + ".put" );
51- metricPutAll = MetricFactory .get ().createTimedMetric (MetricType .L2 , prefix + ".putAll" );
52- metricRemove = MetricFactory .get ().createTimedMetric (MetricType .L2 , prefix + ".remove" );
53- metricRemoveAll = MetricFactory .get ().createTimedMetric (MetricType .L2 , prefix + ".removeAll" );
54- metricClear = MetricFactory .get ().createTimedMetric (MetricType .L2 , prefix + ".clear" );
46+ String prefix = "ebean.l2cache." ;
47+
48+ MetricFactory metricFactory = MetricFactory .get ();
49+
50+ metricGet = metricFactory .createTimedMetric (MetricType .L2 , prefix + "get." + cacheKey );
51+ metricGetAll = metricFactory .createTimedMetric (MetricType .L2 , prefix + "getMany." + cacheKey );
52+ metricPut = metricFactory .createTimedMetric (MetricType .L2 , prefix + "put." + cacheKey );
53+ metricPutAll = metricFactory .createTimedMetric (MetricType .L2 , prefix + "putMany." + cacheKey );
54+ metricRemove = metricFactory .createTimedMetric (MetricType .L2 , prefix + "remove." + cacheKey );
55+ metricRemoveAll = metricFactory .createTimedMetric (MetricType .L2 , prefix + "removeMany." + cacheKey );
56+ metricClear = metricFactory .createTimedMetric (MetricType .L2 , prefix + "clear." + cacheKey );
5557 }
5658
5759 private byte [] key (Object id ) {
@@ -84,18 +86,17 @@ public Map<Object, Object> getAll(Set<Object> keys) {
8486 for (int i = 0 ; i < keyList .size (); i ++) {
8587 map .put (keyList .get (i ), valueDecode (valsAsBytes .get (i )));
8688 }
87- metricGetAll .add (( System . nanoTime () - start ) / 1000L , keyList .size ());
89+ metricGetAll .addSinceNanos ( start , keyList .size ());
8890 return map ;
8991 }
9092 }
9193
92-
9394 @ Override
9495 public Object get (Object id ) {
9596 long start = System .nanoTime ();
9697 try (Jedis resource = jedisPool .getResource ()) {
9798 Object val = valueDecode (resource .get (key (id )));
98- metricGet .add (( System . nanoTime () - start ) / 1000L );
99+ metricGet .addSinceNanos ( start );
99100 return val ;
100101 }
101102 }
@@ -106,7 +107,7 @@ public void put(Object id, Object value) {
106107 long start = System .nanoTime ();
107108 try (Jedis resource = jedisPool .getResource ()) {
108109 resource .set (key (id ), value (value ));
109- metricPut .add (( System . nanoTime () - start ) / 1000L );
110+ metricPut .addSinceNanos ( start );
110111 }
111112 }
112113
@@ -121,7 +122,7 @@ public void putAll(Map<Object, Object> keyValues) {
121122 raw [pos ++] = value (entry .getValue ());
122123 }
123124 resource .mset (raw );
124- metricPutAll .add (( System . nanoTime () - start ) / 1000L , keyValues .size ());
125+ metricPutAll .addSinceNanos ( start , keyValues .size ());
125126 }
126127 }
127128
@@ -130,7 +131,7 @@ public void remove(Object id) {
130131 long start = System .nanoTime ();
131132 try (Jedis resource = jedisPool .getResource ()) {
132133 resource .del (key (id ));
133- metricRemove .add (( System . nanoTime () - start ) / 1000L );
134+ metricRemove .addSinceNanos ( start );
134135 }
135136 }
136137
@@ -139,7 +140,7 @@ public void removeAll(Set<Object> keys) {
139140 long start = System .nanoTime ();
140141 try (Jedis resource = jedisPool .getResource ()) {
141142 resource .del (keysAsBytes (keys ));
142- metricRemoveAll .add (( System . nanoTime () - start ) / 1000L , keys .size ());
143+ metricRemoveAll .addSinceNanos ( start , keys .size ());
143144 }
144145 }
145146
@@ -167,16 +168,18 @@ public void clear() {
167168 List <byte []> keys = scanResult .getResult ();
168169 nextCursor = scanResult .getCursorAsBytes ();
169170
170- byte [][] raw = new byte [keys .size ()][];
171- for (int i = 0 ; i < keys .size (); i ++) {
172- raw [i ] = keys .get (i );
171+ if (!keys .isEmpty ()) {
172+ byte [][] raw = new byte [keys .size ()][];
173+ for (int i = 0 ; i < keys .size (); i ++) {
174+ raw [i ] = keys .get (i );
175+ }
176+ resource .del (raw );
173177 }
174- resource .del (raw );
175178
176179 next = SafeEncoder .encode (nextCursor );
177180 } while (!next .equals ("0" ));
178181
179- metricClear .add (( System . nanoTime () - start ) / 1000L );
182+ metricClear .addSinceNanos ( start );
180183 }
181184 }
182185
0 commit comments