Class BaseLettoRedisDBService

java.lang.Object
at.letto.databaseclient.service.BaseLettoRedisDBService

@Service public class BaseLettoRedisDBService extends Object
Service für die Zugriff auf die REDIS-Datenbank in LeTTo
Es sind die Datenbanken 0 bis 15 verfügbar
In der Umgebungsvariable REDIS_DEFAULT_DATABASE kann eine Standard-Datebank definiert sein ohne Angabe ist 0 die Standard-Datenbank
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
     
    private int
    Zähler für Fehlzugriffe auf Redis-DB
    protected org.slf4j.Logger
     
    static final int
     
    static final int
     
    static final int
     
    static final int
     
    static final int
     
    private boolean
    Indikator, ob Redis-DB zugreifbar
    static final String
     
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    Test der Funktionsfähigkeit der Redis-Datenbank, startet erstmals nach 10 Sek. und dann alle 5 Minuten
    boolean
    deleteKey(int database, String key)
    Löschen vom einem Key aus der REDIS-Datebank
    void
    deleteKeysWithPrefix(int database, String pattern)
    Löschen van allen Datenbankeinträgen in der Redis-DB mit einem Such-Pattern.
    Alle DB-Einträge, die diesem Such-Pattern entsprechen, werden gelöscht.
    void
    Löschen van allen Datenbankeinträgen aus der STANDARD-Redis-DB mit einem Such-Pattern.
    Alle DB-Einträge, die diesem Such-Pattern entsprechen, werden gelöscht.
    get(int database, String key)
    Sucht nach einem Key und gibt den gefundenen Value zurück
    <T> T
    get(int database, String key, Class<T> tClass)
    Sucht nach einem Key und gibt den gefundenen Value zurück oder null wenn der key nicht gefunden werden kann
    get(String key)
    Sucht nach einem Key und gibt den gefundenen Value zurück
    <T> T
    get(String key, Class<T> tClass)
    Sucht nach einem Key und gibt den gefundenen Value als Klasse mit entsprechendem Typ zurück oder null wenn der key nicht gefunden werden kann
    getServiceInfo(String serviceAddress)
     
    getString(int database, String key)
    Sucht nach einem Key und gibt den gefundenen Value als String zurück
    Sucht nach einem Key und gibt den gefundenen Value als String zurück
    Lädt einen Token aus der Redis-DB
    boolean
    hasKey(int database, String key)
     
    boolean
     
     
    keySet(int database)
     
    keySet(int database, String pattern)
     
    keySet(String pattern)
     
    <T> Map<String,T>
    loadKeysWithPrefix(int database, Class<T> typ, String pattern)
    Laden von allen Redis-Einträgen des gleichen Datentyps mit einem Such-Pattern
    loadKeysWithPrefix(int database, String pattern)
    Laden von allen Redis-Einträgen von beliebigen Daten mit einem Such-Pattern.
    <T> Map<String,T>
    loadKeysWithPrefix(Class<T> typ, String pattern)
    Laden von allen Redis-Einträgen des gleichen Datentyps mit einem Such-Pattern aus der Default-Redis-DB
    boolean
    put(int database, String key, Object value)
    speichert ein Objekt mit einem key als JSON in einer Datenbank
    boolean
    put(int database, String key, Object value, int minutes)
    speichert ein Objekt mit einem key in einer Datenbank
    boolean
    put(String key, Object value)
    speichert ein Objekt mit einem key in der Standard-Datebank
    boolean
    putMilliSeconds(int database, String key, Object value, long milliseconds)
    speichert ein Objekt mit einem key in einer Datenbank
    boolean
    putSeconds(int database, String key, Object value, long seconds)
    speichert ein Objekt mit einem key in einer Datenbank
    boolean
    putToken(LettoToken lettoToken)
    Speichert einen Token in der Redis-DB für eine Zeit von maximal 2 Minuten
    org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory
    Liefert einen Redis-Client auf die Standard-Redis-Datenbank des Services
    org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory
    redisClient(int database)
    Liefert einen Redis-Client auf angegebene Datenbank
    org.springframework.data.redis.core.RedisTemplate<String,Object>
    Liefert ein Redis-Template auf die Standard-Redis-Datenbank des Services
    org.springframework.data.redis.core.RedisTemplate<String,Object>
    redisTemplate(int database)
    Liefert ein Redis-Template auf angegebene Datenbank
    boolean
    registriert ein Service in der Datenbank 0 (REDIS_DATABASE_SETUP) mit den notwendigen Daten
    sollte von jedem Service regelmäßig aufgerufen werden (z.B. jede Minute und beim Systemstart) und speichert alle Daten eines Docker-Containers (Services) in der Redis-Datenbank
    Als Key wird die Adresse innerhalb des Docker-Netzwerkes verwendet - die ja eindeutig sein muss!
    boolean
    Löscht einen Token aus der Redis-DB
    private void
    Erhöht der Fehlerzähler und setzt redisOK auf false, wenn zu viele Fehler auftreten

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • TOKEN_PREFIX

      public static final String TOKEN_PREFIX
      See Also:
    • REDIS_DATABASE_SETUP

      public static final int REDIS_DATABASE_SETUP
      See Also:
    • REDIS_DATABASE_LOGIN

      public static final int REDIS_DATABASE_LOGIN
      See Also:
    • REDIS_DATABASE_QUESTION

      public static final int REDIS_DATABASE_QUESTION
      See Also:
    • REDIS_DATABASE_EXPORT

      public static final int REDIS_DATABASE_EXPORT
      See Also:
    • REDIS_DATABASE_EDIT

      public static final int REDIS_DATABASE_EDIT
      See Also:
    • databaseConnectionService

      @Autowired private DatabaseConnectionService databaseConnectionService
    • logger

      protected org.slf4j.Logger logger
    • errorCount

      private int errorCount
      Zähler für Fehlzugriffe auf Redis-DB
    • redisOk

      private boolean redisOk
      Indikator, ob Redis-DB zugreifbar
  • Constructor Details

    • BaseLettoRedisDBService

      public BaseLettoRedisDBService()
  • Method Details

    • checkRedisService

      @Scheduled(initialDelay=10000L, fixedRate=300000L) public void checkRedisService()
      Test der Funktionsfähigkeit der Redis-Datenbank, startet erstmals nach 10 Sek. und dann alle 5 Minuten
    • redisClient

      public org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory redisClient()
      Liefert einen Redis-Client auf die Standard-Redis-Datenbank des Services
      Returns:
      LettuceConnectionFactory für den Datenbankzugriff
    • redisClient

      public org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory redisClient(int database)
      Liefert einen Redis-Client auf angegebene Datenbank
      Parameters:
      database - Datenbank auf die verbunden wird
      Returns:
      LettuceConnectionFactory für den Datenbankzugriff
    • redisTemplate

      public org.springframework.data.redis.core.RedisTemplate<String,Object> redisTemplate()
      Liefert ein Redis-Template auf die Standard-Redis-Datenbank des Services
      Returns:
      RedisTemplateinvalid input: '<'String, Object> für den Datenbankzugriff
    • redisTemplate

      public org.springframework.data.redis.core.RedisTemplate<String,Object> redisTemplate(int database)
      Liefert ein Redis-Template auf angegebene Datenbank
      Parameters:
      database - Datenbank auf die verbunden wird
      Returns:
      RedisTemplateinvalid input: '<'String, Object> für den Datenbankzugriff
    • hasKey

      public boolean hasKey(String key)
      Returns:
      Sucht in der Standard-Datenbank des Services nach einem key
    • hasKey

      public boolean hasKey(int database, String key)
      Returns:
      Sucht in der angegebenen Datenbank nach einem key
    • keySet

      public Set<String> keySet()
      Returns:
      liefert alle Keys der Standard-Datenbank
    • keySet

      public Set<String> keySet(String pattern)
      Returns:
      liefert alle Keys der Standard-Datebank welche einem Suchkriterium entsprechen
    • keySet

      public Set<String> keySet(int database)
      Returns:
      liefert alle Keys einer Datenbank
    • keySet

      public Set<String> keySet(int database, String pattern)
      Returns:
      liefert alle Keys einer Datebank welche einem Suchkriterium entsprechen
    • get

      public String get(String key)
      Sucht nach einem Key und gibt den gefundenen Value zurück
    • get

      public String get(int database, String key)
      Sucht nach einem Key und gibt den gefundenen Value zurück
    • getString

      public String getString(String key)
      Sucht nach einem Key und gibt den gefundenen Value als String zurück
    • getString

      public String getString(int database, String key)
      Sucht nach einem Key und gibt den gefundenen Value als String zurück
    • get

      public <T> T get(String key, Class<T> tClass)
      Sucht nach einem Key und gibt den gefundenen Value als Klasse mit entsprechendem Typ zurück oder null wenn der key nicht gefunden werden kann
    • get

      public <T> T get(int database, String key, Class<T> tClass)
      Sucht nach einem Key und gibt den gefundenen Value zurück oder null wenn der key nicht gefunden werden kann
    • put

      public boolean put(String key, Object value)
      speichert ein Objekt mit einem key in der Standard-Datebank
    • put

      public boolean put(int database, String key, Object value)
      speichert ein Objekt mit einem key als JSON in einer Datenbank
    • put

      public boolean put(int database, String key, Object value, int minutes)
      speichert ein Objekt mit einem key in einer Datenbank
      Parameters:
      database -
      key -
      value -
      minutes - Anzahl an Minuten bis der Eintrag gelöscht wird
    • putSeconds

      public boolean putSeconds(int database, String key, Object value, long seconds)
      speichert ein Objekt mit einem key in einer Datenbank
      Parameters:
      database -
      key -
      value -
      seconds - Anzahl an Sekunden bis der Eintrag gelöscht wird
    • putMilliSeconds

      public boolean putMilliSeconds(int database, String key, Object value, long milliseconds)
      speichert ein Objekt mit einem key in einer Datenbank
      Parameters:
      database -
      key -
      value -
      milliseconds - Anzahl an MilliSekunden bis der Eintrag gelöscht wird
    • setError

      private void setError()
      Erhöht der Fehlerzähler und setzt redisOK auf false, wenn zu viele Fehler auftreten
    • registerService

      public boolean registerService(LeTToServiceInfoDto serviceInfoDto)
      registriert ein Service in der Datenbank 0 (REDIS_DATABASE_SETUP) mit den notwendigen Daten
      sollte von jedem Service regelmäßig aufgerufen werden (z.B. jede Minute und beim Systemstart) und speichert alle Daten eines Docker-Containers (Services) in der Redis-Datenbank
      Als Key wird die Adresse innerhalb des Docker-Netzwerkes verwendet - die ja eindeutig sein muss!
    • getServiceInfo

      public LeTToServiceInfoDto getServiceInfo(String serviceAddress)
    • deleteKeysWithPrefix

      public void deleteKeysWithPrefix(String pattern)
      Löschen van allen Datenbankeinträgen aus der STANDARD-Redis-DB mit einem Such-Pattern.
      Alle DB-Einträge, die diesem Such-Pattern entsprechen, werden gelöscht.
      Parameters:
      pattern - Suchmuster (zB: htlstp:tests:*)
    • deleteKeysWithPrefix

      public void deleteKeysWithPrefix(int database, String pattern)
      Löschen van allen Datenbankeinträgen in der Redis-DB mit einem Such-Pattern.
      Alle DB-Einträge, die diesem Such-Pattern entsprechen, werden gelöscht.
      Parameters:
      database - Ziel-Redis-Datenbank
      pattern - Suchmuster (zB: htlstp:tests:*)
    • deleteKey

      public boolean deleteKey(int database, String key)
      Löschen vom einem Key aus der REDIS-Datebank
      Parameters:
      database - Ziel-Redis-Datenbank
      key - Key der gelöscht werden soll
    • loadKeysWithPrefix

      public <T> Map<String,T> loadKeysWithPrefix(Class<T> typ, String pattern)
      Laden von allen Redis-Einträgen des gleichen Datentyps mit einem Such-Pattern aus der Default-Redis-DB
      Type Parameters:
      T -
      Parameters:
      typ - Class des Ziel-Typs
      pattern - Suchmuster (zB: htlstp:tests:*)
      Returns:
      HshMap mit Key in Redis-DB und Objekten
    • loadKeysWithPrefix

      public <T> Map<String,T> loadKeysWithPrefix(int database, Class<T> typ, String pattern)
      Laden von allen Redis-Einträgen des gleichen Datentyps mit einem Such-Pattern
      Type Parameters:
      T -
      Parameters:
      database - Redis-Datenbanknummer
      typ - Class des Ziel-Typs
      pattern - Suchmuster (zB: htlstp:tests:*)
      Returns:
      HshMap mit Key in Redis-DB und Objekten
    • loadKeysWithPrefix

      public Map<String,String> loadKeysWithPrefix(int database, String pattern)
      Laden von allen Redis-Einträgen von beliebigen Daten mit einem Such-Pattern.
      Parameters:
      database - Redis-Datenbanknummer
      pattern - Suchmuster (zB: htlstp:tests:*)
      Returns:
      HashMap mit Keys in Redis-DB und JSON-Strings
    • getToken

      public LettoToken getToken(String token)
      Lädt einen Token aus der Redis-DB
      Parameters:
      token - Tokenstring
      Returns:
      LettoToken-Objekt
    • putToken

      public boolean putToken(LettoToken lettoToken)
      Speichert einen Token in der Redis-DB für eine Zeit von maximal 2 Minuten
      Parameters:
      lettoToken - LettoToken-Objekt
    • removeToken

      public boolean removeToken(String token)
      Löscht einen Token aus der Redis-DB
      Parameters:
      token - Tokenstring