Java Redis Tutorial

  • Hey zusammen,

    ich möchte euch hier einen kleinen Einblick in die Welt mit Redis gewähren. Es euch erklären wie ihr es am besten nutzt und wieso überhaupt?

    Hallo zusammen,

    Zuerst möchte ich euch ein paar Beispiele nennen wieso Redis (meiner Meinung nach) ein sehr guten Verwendungszweck hat.
    Ihr könnt z.B. von einem Minecraft Server die User Statistiken in Redis speichern und so von überall drauf zugreifen. Von andern Server und sogar von Web etc.
    Was mann aber auch machen kann ich zwei Server mit einander zu Synchronisieren. Wofür das gut ist? Ganz einfach ihr habt z.B. einen großen CityBuild Server mit vielen extras aber sobald zu viele Spieler drauf sind fängt es an zu lägen. Somit könnt ihr die Spieler aufteilen aber die Welt sind immer Synchronisieren (gleich).
    Natürlich gibt es viele Möglichkeiten Redis zu benutzen.

    So nun zeige ich euch wie mann es anwendet:

    Ihr solltet die "Redis API" via Maven oder als Jar natürlich eingebunden haben. Wenn ihr Maven nutzt weiße ich auf einen andern Lexikon Beitrag hin von @Luca Feger.
    Maven Code: redis.clients:jedis:2.9.0

    Zuerst erstellen wir unsere "Main" in meinen Fall nenne ich sie RedisTutorial, diese Klasse brauche ich aber erst später.

    Dann können wir ein Package erstellen Namens redis wo wir die Klassen RedisManager und RedisPubSub erstellen.


    Java: RedisPubSub
    1. package devtek.redis;
    2. import redis.clients.jedis.JedisPubSub;
    3. public class RedisPubSub extends JedisPubSub {
    4. @Override
    5. public void onMessage(String channel, String message) {
    6. //Code
    7. }
    8. }

    In dieser Klasse wird aufgerufen wenn etwas in den PubSuB von Redis gesendet wird. Was der PubSub ist? Es ist ganz einfach ihr sendet z.B. vom Server-1 eine Meldung in den PubSub (z.B. Hall hier ist Server-1) und alle anderen Server der diesen PubSub Channel dann abonniert haben bekommen im gleichen Moment dies Nachricht und können dann damit Arbeiten.


    Jetzt schreiben wir den RedisManager. Dies ist die Kasse wo die ganze "Magie" passieret. Wir haben nun den Host, Port und das Passwort in den JavaProcess cache geladen da wir diesen immer wieder brauchen. Zu dem PubSub komme ich später noch einmal.


    Mit diesem kurzen Code bauen wir einen Verbindung zum RedisServer auf und können nun mit ihm "Arbeiten". Diesen code setzt ihr einfach unter den Code von eben.

    Jetzt kommen wir zu dem PubSub zunächst schreiben wir den Subscriber.


    Dieser Code packt ihr einfach unter den getJedis() Code. In die Methode public RedisManger(...) schreibt ihr jetzt noch setupSubscriber();. Jetzt schreiben wir noch eine kleine Methode damit wir auch eine Nachricht in den PubSub senden können.


    Java: RedisManger
    1. public void sendMessage(String channel, String message) {
    2. getJedis().publish(channel, message);
    3. }



    Jetzt rufen wir den RedisManager bei Start der Software oder Plugin noch auf.


    Java: RedisTutorial (Main)
    1. private static RedisManager redisManager;
    2. public static void main(String[] args) {
    3. redisManager = new RedisManager("127.0.0.1", 6379, "PASSWORD", new RedisPubSub());
    4. }
    5. public static RedisManager getRedisManager() {
    6. return redisManager;
    7. }



    Ich werde euch noch mal alle Klassen zeigen.



    Jetzt habt ihr erfolgreich eine RedisManager System.

    Ich zeige euch jetzt in einer einfachen Methode noch wie ihr damit jetzt arbeiten könnt.

    Java
    1. private void arbeitMitRedis() {
    2. Jedis jedis = redisManager.getJedis();
    3. jedis.hset("Hallo", "Hallo" , "Welt"); //Man speichert unter einem Key ein Feld mit eine Wert drin
    4. jedis.set("Hallo", "Welt"); //Man speichert unter einem Key ein Wert
    5. jedis.del("Hallo"); //Man löscht einen Key und alle Wert die drin sind, sofern er existiert
    6. jedis.exists("Hallo"); //Man kontrolliert ob ein Key esistiert
    7. redisManager.sendMessage("System", "hallo ich bin Server-1"); //Hier mit sendet ihr einen Nachricht(hallo ich bin Server-1) in den Channel "System"}

    Ich zeige euch hier nur ein paar Möglichkeiten die Redis mit sich bringt.

    Ich hoffe euch hilft der Beitrag weiter und ich konnte euch überzeugen auch mit Redis zu arbeiten.

    Sofern bedarf besteht das ich euch zeige wie man 2 oder mehr Server Synchronisiert, schreibt es mir.

Teilen

Kommentare 5

  • An sich ganz cool aber wie kann man zum beispiel eine Welt so Live Synchronisieren?

    • Ich werde nach den Weihnachtstagen (26.12) dazu auch einen Lexikon Eintrag verfassen.

    • Ich überlege halt ob ich euch zeigen sollen wie man nur Blöcke, Bäume, Truhe und Schilder sync oder auch den Skin richtig mit Sounds und Partikel etc. Das wenn man auf Server-1 den "NPC" schlägt das der User auf Server-2 diesen schaden auch bekommt. Aber mann würde den Spieler 2 dann natürlich auch sehen Live.

    • Ja genau sowas wäre gut

    • Dann werde ich das jetzt mal programmieren.