Skip to content

Commit 52755f0

Browse files
committed
1 parent 04f5ef4 commit 52755f0

1 file changed

Lines changed: 14 additions & 1 deletion

File tree

src/main/java/com/redislabs/university/RU102J/dao/SiteStatsDaoRedisImpl.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
import redis.clients.jedis.Jedis;
1212
import redis.clients.jedis.JedisPool;
13+
import redis.clients.jedis.Transaction;
1314

1415
public class SiteStatsDaoRedisImpl implements SiteStatsDao {
1516

@@ -47,7 +48,7 @@ public void update(MeterReading reading) {
4748
ZonedDateTime day = reading.getDateTime();
4849
String key = RedisSchema.getSiteStatsKey(siteId, day);
4950

50-
updateBasic(jedis, key, reading);
51+
updateOptimized(jedis, key, reading);
5152
}
5253
}
5354

@@ -81,6 +82,18 @@ private void updateBasic(Jedis jedis, String key, MeterReading reading) {
8182
// Challenge #3
8283
private void updateOptimized(Jedis jedis, String key, MeterReading reading) {
8384
// START Challenge #3
85+
try (Transaction t = jedis.multi()) {
86+
String reportingTime = ZonedDateTime.now(ZoneOffset.UTC).toString();
87+
t.hset(key, SiteStats.reportingTimeField, reportingTime);
88+
t.hincrBy(key, SiteStats.countField, 1);
89+
t.expire(key, weekSeconds);
90+
91+
compareAndUpdateScript.updateIfGreater(t, key, SiteStats.maxWhField, reading.getWhGenerated());
92+
compareAndUpdateScript.updateIfLess(t, key, SiteStats.minWhField, reading.getWhGenerated());
93+
compareAndUpdateScript.updateIfGreater(t, key, SiteStats.maxCapacityField, getCurrentCapacity(reading));
94+
95+
t.exec();
96+
}
8497
// END Challenge #3
8598
}
8699

0 commit comments

Comments
 (0)