Hej wszystkim jestem tutaj nowy.
Ostatnimi czasy zainteresowałem się redisem, spodobało mi się samo działanie bazy, poczytałem o samej bazie później o Redissonie i przyszedł czas na pierwsze kodzenie
Moim celem było napisanie pluginu na kity, który przekazuje stan kitów gracza pomiędzy serwerami SkyBlock.
Udało się ale nie jestem pewien czy w ten sposób powinno się robić tzn.
Po pierwsze utworzyłem obiekt Kit który przechowuje stan kitów gracza.
UUID oraz 3 pola long kiedy gracz będzie mógł odebrać dany kit.
Następnie stworzyłem klasę KitUser która przechowuje te dane w mapie Mapa<UUID, Kit>
Teraz przyszedł czas na klasę głowną.
Załadowałem clienta, pobrałem mapę z bazy i utworzyłem listenera który będzie nasłuchiwał "wysyłanych wiadomości".
Następnie zrobiłem metodę takeKit(Player, int) która jest wykonywana podczas użycia komendy /kit int, jak można zobaczyć, że drogą dedukcji wymyśliłem to tak, że na serwerze na którym gracz jest aktualnie, dane będą aktualizowane od razu, tak aby to były one od razu zaaktualizowane, bo jak patrzyłem to od wysłania do odbioru pakietu minęło 0-1ms, wiem że to mały czas no ale może być różnie, wole dmuchać na zimne
Dodatkowo na serwerze którym gracz odbierze kit, obiekt Kita jest wstawiany do Redisowej mapy w formie Stringa tak aby gdy odpale inny serwer skyblock dane zawsze były dostępne.
Następnie ładowanie użytkowników z owej mapy klasa KitUser metoda load().
Na koniec dokończyłem listenera który odbiera wiadomość, jeśli dane odbierze ten sam serwer na którym gracz odebrał kita to nie jest on odbierany, bo po co skoro wcześniej ustawiłem już te dane? Lecz jeśli nie jest to ten serwer to dane są ustawiane na drugim serwerze.
No i teraz myślę czy to aby na pewno zostało zrobione poprawnie, bo z jednej strony można by operować na samych Mapach Redisa lecz myślę że nie jest to wygodne, przykładowo planuje tworzyć większe wtyczki, bardziej funkcjonalne i wtedy gdy obiekt będzie miał przykładowo 30 pól, no ciężko w takim scenariuszu operować na mapach.
Link do kodu: https://github.com/kurwinoxik/kurwixonKits
Chciałem zaczerpnąć wiedzy z publicznych projektów ale ciężko było znaleźć coś fajnego.
Proszę o każdą wskazówkę dotyczącą co robię źle/co jest optymalniejsze/na co uważać i tak dalej.
Oraz dodatkowo pytanie czy w ogóle dane powinno się trzymać w redisie na stałe? Słyszałem, że lepiej te dane zapisywać np.: w MySql ale nie wiem ile jest w tym prawdy.
Za każdą odpowiedź bardzo dziękuje