refactor: Extend `DATA_UPDATE` Redis cache time on `LOCKSTEP` mode

feat/data-edit-commands
William 1 year ago
parent 8e0ad76968
commit 05c988f2c7
No known key found for this signature in database

@ -24,15 +24,13 @@ import org.jetbrains.annotations.NotNull;
import java.util.Locale;
public enum RedisKeyType {
DATA_UPDATE(10),
SERVER_SWITCH(10),
DATA_CHECKOUT(60 * 60 * 24 * 7 * 52);
private final int timeToLive;
DATA_UPDATE,
SERVER_SWITCH,
DATA_CHECKOUT;
RedisKeyType(int timeToLive) {
this.timeToLive = timeToLive;
}
public static final int TTL_1_YEAR = 60 * 60 * 24 * 7 * 52; // 1 year
public static final int TTL_10_SECONDS = 10; // 10 seconds
@NotNull
public String getKeyPrefix(@NotNull String clusterId) {
@ -44,8 +42,4 @@ public enum RedisKeyType {
);
}
public int getTimeToLive() {
return timeToLive;
}
}

@ -183,13 +183,14 @@ public class RedisManager extends JedisPubSub {
*
* @param user the user to set data for
* @param data the user's data to set
* @param timeToLive The time to cache the data for
*/
@Blocking
public void setUserData(@NotNull User user, @NotNull DataSnapshot.Packed data) {
public void setUserData(@NotNull User user, @NotNull DataSnapshot.Packed data, int timeToLive) {
try (Jedis jedis = jedisPool.getResource()) {
jedis.setex(
getKey(RedisKeyType.DATA_UPDATE, user.getUuid(), clusterId),
RedisKeyType.DATA_UPDATE.getTimeToLive(),
timeToLive,
data.asBytes(plugin)
);
plugin.debug(String.format("[%s] Set %s key on Redis", user.getUsername(), RedisKeyType.DATA_UPDATE));
@ -264,7 +265,8 @@ public class RedisManager extends JedisPubSub {
try (Jedis jedis = jedisPool.getResource()) {
jedis.setex(
getKey(RedisKeyType.SERVER_SWITCH, user.getUuid(), clusterId),
RedisKeyType.SERVER_SWITCH.getTimeToLive(), new byte[0]
RedisKeyType.TTL_10_SECONDS,
new byte[0]
);
plugin.debug(String.format("[%s] Set %s key to Redis",
user.getUsername(), RedisKeyType.SERVER_SWITCH));

@ -21,6 +21,7 @@ package net.william278.husksync.sync;
import net.william278.husksync.HuskSync;
import net.william278.husksync.data.DataSnapshot;
import net.william278.husksync.redis.RedisKeyType;
import net.william278.husksync.user.OnlineUser;
import org.jetbrains.annotations.NotNull;
@ -61,7 +62,7 @@ public class DelayDataSyncer extends DataSyncer {
plugin.runAsync(() -> {
plugin.getRedisManager().setUserServerSwitch(user);
final DataSnapshot.Packed data = user.createSnapshot(DataSnapshot.SaveCause.DISCONNECT);
plugin.getRedisManager().setUserData(user, data);
plugin.getRedisManager().setUserData(user, data, RedisKeyType.TTL_10_SECONDS);
plugin.getDatabase().addSnapshot(user, data);
});
}

@ -21,6 +21,7 @@ package net.william278.husksync.sync;
import net.william278.husksync.HuskSync;
import net.william278.husksync.data.DataSnapshot;
import net.william278.husksync.redis.RedisKeyType;
import net.william278.husksync.user.OnlineUser;
import org.jetbrains.annotations.NotNull;
@ -60,7 +61,7 @@ public class LockstepDataSyncer extends DataSyncer {
public void saveUserData(@NotNull OnlineUser user) {
plugin.runAsync(() -> {
final DataSnapshot.Packed data = user.createSnapshot(DataSnapshot.SaveCause.DISCONNECT);
plugin.getRedisManager().setUserData(user, data);
plugin.getRedisManager().setUserData(user, data, RedisKeyType.TTL_1_YEAR);
plugin.getRedisManager().setUserCheckedOut(user, false);
plugin.getDatabase().addSnapshot(user, data);
});

Loading…
Cancel
Save