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; import java.util.Locale;
public enum RedisKeyType { 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) { public static final int TTL_1_YEAR = 60 * 60 * 24 * 7 * 52; // 1 year
this.timeToLive = timeToLive; public static final int TTL_10_SECONDS = 10; // 10 seconds
}
@NotNull @NotNull
public String getKeyPrefix(@NotNull String clusterId) { 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 user the user to set data for
* @param data the user's data to set * @param data the user's data to set
* @param timeToLive The time to cache the data for
*/ */
@Blocking @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()) { try (Jedis jedis = jedisPool.getResource()) {
jedis.setex( jedis.setex(
getKey(RedisKeyType.DATA_UPDATE, user.getUuid(), clusterId), getKey(RedisKeyType.DATA_UPDATE, user.getUuid(), clusterId),
RedisKeyType.DATA_UPDATE.getTimeToLive(), timeToLive,
data.asBytes(plugin) data.asBytes(plugin)
); );
plugin.debug(String.format("[%s] Set %s key on Redis", user.getUsername(), RedisKeyType.DATA_UPDATE)); 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()) { try (Jedis jedis = jedisPool.getResource()) {
jedis.setex( jedis.setex(
getKey(RedisKeyType.SERVER_SWITCH, user.getUuid(), clusterId), 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", plugin.debug(String.format("[%s] Set %s key to Redis",
user.getUsername(), RedisKeyType.SERVER_SWITCH)); user.getUsername(), RedisKeyType.SERVER_SWITCH));

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

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

Loading…
Cancel
Save