Skip to content

Commit 3ba2146

Browse files
author
Govind Balaji S
committed
1 parent b0e7c82 commit 3ba2146

1 file changed

Lines changed: 12 additions & 2 deletions

File tree

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

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313

1414
public class SiteStatsDaoRedisImpl implements SiteStatsDao {
1515

16-
private final int weekSeconds = 60 * 60 * 24 * 7;
16+
private static final int weekSeconds = 60 * 60 * 24 * 7;
1717
private final JedisPool jedisPool;
1818
private final CompareAndUpdateScript compareAndUpdateScript;
1919

@@ -47,7 +47,7 @@ public void update(MeterReading reading) {
4747
ZonedDateTime day = reading.getDateTime();
4848
String key = RedisSchema.getSiteStatsKey(siteId, day);
4949

50-
updateBasic(jedis, key, reading);
50+
updateOptimized(jedis, key, reading);
5151
}
5252
}
5353

@@ -81,6 +81,16 @@ private void updateBasic(Jedis jedis, String key, MeterReading reading) {
8181
// Challenge #3
8282
private void updateOptimized(Jedis jedis, String key, MeterReading reading) {
8383
// START Challenge #3
84+
Transaction transaction = jedis.multi();
85+
String reportingTime = ZonedDateTime.now(ZoneOffset.UTC).toString();
86+
transaction.hset(key, SiteStats.reportingTimeField, reportingTime);
87+
transaction.hincrBy(key, SiteStats.countField, 1);
88+
transaction.expire(key, weekSeconds);
89+
compareAndUpdateScript.updateIfGreater(transaction, key, SiteStats.maxWhField, reading.getWhGenerated());
90+
compareAndUpdateScript.updateIfLess(transaction, key, SiteStats.minWhField, reading.getWhGenerated());
91+
compareAndUpdateScript.updateIfGreater(transaction, key, SiteStats.maxCapacityField, getCurrentCapacity(reading));
92+
93+
transaction.exec();
8494
// END Challenge #3
8595
}
8696

0 commit comments

Comments
 (0)