Class RedisHelper<T extends RedisHelper<T>>

java.lang.Object
net.bugreaper.modules.redis.helpers.RedisHelper<T>
Type Parameters:
T - concrete Redis helper type used for fluent method chaining
All Implemented Interfaces:
RedisHelperInt
Direct Known Subclasses:
RedisHashHelper, RedisListHelper, RedisSetHelper, RedisStreamHelper, RedisStringHelper, RedisZSetHelper

public abstract class RedisHelper<T extends RedisHelper<T>> extends Object implements RedisHelperInt
Abstract base class for Redis helper implementations.

Provides common Redis connection management and shared configuration for different Redis data type helpers such as List, Hash, and String.

This class uses self-referencing generics to support fluent API chaining for setters while preserving the concrete helper type.

 Example:
 
 RedisListHelper redis = new RedisListHelper(...)
         .setAwaitMs(500);
 
 
  • Field Details

    • jedisPool

      protected redis.clients.jedis.JedisPool jedisPool
    • awaitMs

      protected volatile int awaitMs
      default ms await for asserts and grab
    • SCAN_BATCH_SIZE

      protected static final int SCAN_BATCH_SIZE
      default ms await for asserts and grab
      See Also:
  • Constructor Details

    • RedisHelper

      protected RedisHelper(String host, int port, String username, String password)
      This constructor initializes client for interaction with Redis LIST data types
      Parameters:
      host - host of Redis "localhost"
      port - port of Redis
      username - admin username
      password - admin password
  • Method Details

    • setAwaitMs

      public T setAwaitMs(int awaitMs)
    • getConfigSummary

      public String getConfigSummary()
    • cleanAll

      @Step("(Redis) Clean all data from Redis") public final void cleanAll()
      Description copied from interface: RedisHelperInt
      Removes ALL data from current Redis database.

      WARNING: This operation deletes every key from selected Redis DB.

      Specified by:
      cleanAll in interface RedisHelperInt
    • deleteKeysByPattern

      @Step("(Redis) Delete keys by key-pattern <{keyPattern}>") public final void deleteKeysByPattern(String keyPattern)
      Description copied from interface: RedisHelperInt
      Deletes Redis keys matching the specified pattern.

      Uses Redis SCAN to safely find matching keys without blocking the Redis server.

      Examples: users:admins (LIST) ├── 0 -> Alex └── 1 -> John users:developers (STRINGS) ├── 0 -> Michael └── 1 -> Max users:data (HASH) ├── 1 -> test1 └── 2 -> test2

       deleteByKeyPattern("users:*");
       

      Deletes:

       users:admins
       users:developers
       users:data
       

      Also supports exact key deletion:

       deleteByKeyPattern("users:admins");
       
      Specified by:
      deleteKeysByPattern in interface RedisHelperInt
      Parameters:
      keyPattern - Redis key pattern or exact key
    • getKeysCountByPattern

      public final long getKeysCountByPattern(String keyPattern)
      Description copied from interface: RedisHelperInt
      Returns the number of Redis keys matching the specified pattern.

      This method counts keys, not records inside.

      Example:

       users:admins      -> LIST
       users:developers  -> HASH
       users:me          -> STRING
      
       getKeysCountByPattern("users:*") returns 3
       
      Specified by:
      getKeysCountByPattern in interface RedisHelperInt
      Parameters:
      keyPattern - Redis key pattern
      Returns:
      number of matching Redis keys
    • getKeyType

      public final String getKeyType(String key)
      Description copied from interface: RedisHelperInt
      Returns the Redis data type of the specified key.

      Possible return values:

      • string
      • list
      • set
      • zset
      • hash
      • stream
      • none (key does not exist)
      Specified by:
      getKeyType in interface RedisHelperInt
      Parameters:
      key - Redis key
      Returns:
      Redis data type or none if the key does not exist
    • getKeyExistsStatus

      public boolean getKeyExistsStatus(String key)
      Description copied from interface: RedisHelperInt
      Checks whether the specified Redis key exists.

      The method works with any Redis data type, including LIST, STRING, HASH, SET, ZSET, and STREAM.

      Specified by:
      getKeyExistsStatus in interface RedisHelperInt
      Parameters:
      key - Redis key
      Returns:
      true if the key exists, otherwise false
    • getTtlByKey

      public long getTtlByKey(String key)
      Description copied from interface: RedisHelperInt
      Returns the remaining TTL (time-to-live) of the specified Redis key.
      Specified by:
      getTtlByKey in interface RedisHelperInt
      Parameters:
      key - Redis key
      Returns:
      remaining TTL in seconds
    • seeKeyExists

      @Step("(Redis)[ASSERT] Key <{key}> exists") public final void seeKeyExists(String key)
      Description copied from interface: RedisHelperInt
      Asserts that the specified Redis key exists.

      Uses await.

      The method works with any Redis data type, including LIST, STRING, HASH, SET, ZSET, and STREAM.

      Example:

       seeKeyExists("users:admins");
       seeKeyExists("users:1");
       
      Specified by:
      seeKeyExists in interface RedisHelperInt
      Parameters:
      key - Redis key
    • seeKeyTypeIs

      @Step("(Redis)[ASSERT] Key <{key}> type is <{type}>") public final void seeKeyTypeIs(String key, String type)
      Description copied from interface: RedisHelperInt
      Asserts that the specified Redis key has the expected data type.

      Supported Redis data types:

      • string
      • list
      • set
      • zset
      • hash
      • stream

      Examples:

       seeKeyTypeIs("users:1", "string");
       seeKeyTypeIs("users:admins", "list");
       seeKeyTypeIs("users", "hash");
       
      Specified by:
      seeKeyTypeIs in interface RedisHelperInt
      Parameters:
      key - Redis key
      type - expected Redis data type
    • seeTtlIsGreaterThan

      @Step("(Redis)[ASSERT] Key <{key}> ttl greater {minTtl} seconds") public void seeTtlIsGreaterThan(String key, int minTtl)
      Description copied from interface: RedisHelperInt
      Asserts that the key TTL is greater than the specified value.
      Specified by:
      seeTtlIsGreaterThan in interface RedisHelperInt
      Parameters:
      key - Redis key
      minTtl - minimum expected TTL in seconds
    • seeTtlIsLessThan

      @Step("(Redis)[ASSERT] Key <{key}> ttl less {maxTtl} seconds") public void seeTtlIsLessThan(String key, int maxTtl)
      Description copied from interface: RedisHelperInt
      Asserts that the key TTL is less than the specified value.
      Specified by:
      seeTtlIsLessThan in interface RedisHelperInt
      Parameters:
      key - Redis key
      maxTtl - maximum expected TTL in seconds
    • seeRecordsCountByKeyIsExactly

      @Step("(Redis)[ASSERT] Key <{key}> has exactly {expectedCount} records") public void seeRecordsCountByKeyIsExactly(String key, long expectedCount)
      Description copied from interface: RedisHelperInt
      Asserts that the number of records in the Redis key is exactly the expected value.

      Uses await.

      The returned records depend on the configured Redis data type:

      • LIST - number of records stored in the specified Redis LIST
      • HASH - number of records stored in the specified Redis HASH
      • STRING - contains only one value per key if exist
      • SET - number of records stored in the specified Redis SET
      • ZSET - number of records stored in the specified Redis ZSET
      • STREAM - number of records stored in the specified Redis STREAM
      Specified by:
      seeRecordsCountByKeyIsExactly in interface RedisHelperInt
      Parameters:
      key - Redis key
      expectedCount - expected number of records
    • seeKeysCountByPatternIsExactly

      @Step("(Redis)[ASSERT] Keys count by key-pattern <{keyPattern}> is exactly {expectedCount}") public final void seeKeysCountByPatternIsExactly(String keyPattern, long expectedCount)
      Description copied from interface: RedisHelperInt
      Asserts that the number of Redis keys matching the specified pattern is exactly the expected count.

      Uses await.

      Specified by:
      seeKeysCountByPatternIsExactly in interface RedisHelperInt
      Parameters:
      keyPattern - Redis key pattern
      expectedCount - expected number of keys
    • seeKeysCountByPatternIsGreaterThan

      @Step("(Redis)[ASSERT] Keys count by key-pattern <{keyPattern}> is greater {minCount}") public final void seeKeysCountByPatternIsGreaterThan(String keyPattern, long minCount)
      Description copied from interface: RedisHelperInt
      Asserts that the number of Redis keys matching the specified pattern is greater than the given value.

      Uses await.

      Specified by:
      seeKeysCountByPatternIsGreaterThan in interface RedisHelperInt
      Parameters:
      keyPattern - Redis key pattern
      minCount - minimum expected number of keys
    • seeKeysCountByPatternIsLessThan

      @Step("(Redis)[ASSERT] Keys count by key-pattern <{keyPattern}> is less {maxCount}") public final void seeKeysCountByPatternIsLessThan(String keyPattern, long maxCount)
      Description copied from interface: RedisHelperInt
      Asserts that the number of Redis keys matching the specified pattern is less than the given value.

      Uses await.

      Specified by:
      seeKeysCountByPatternIsLessThan in interface RedisHelperInt
      Parameters:
      keyPattern - Redis key pattern
      maxCount - maximum expected number of keys
    • checkKeyExists

      protected void checkKeyExists(String key)
    • checkKeyTypeIs

      protected final void checkKeyTypeIs(String key, String type)
    • attachAndLogList

      protected void attachAndLogList(List<String> actualList, String key)
    • execute

      protected void execute(Consumer<redis.clients.jedis.Jedis> action)
    • executeReturn

      protected <R> R executeReturn(Function<redis.clients.jedis.Jedis,R> action)
    • getPrefix

      protected static String getPrefix(String keyWithId)