Class Redis
- All Implemented Interfaces:
RedisConfig,RedisHelperInt
This class delegates all operations to a concrete Redis helper implementation based on the selected data type.
Supported Redis data types:
list-RedisListHelperhash-RedisHashHelperstring-RedisStringHelperset-RedisSetHelperzset-RedisZSetHelperstream-RedisStreamHelper
The selected Redis data type defines the underlying Redis commands used for storing and retrieving records.
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidAdds a record to Redis using the configured Redis data type helper.voidAdds a record to Redis with an expiration time.voidcleanAll()Removes ALL data from current Redis database.voiddeleteKeysByPattern(String keyPattern) Deletes Redis keys matching the specified pattern.Returns and logs (at INFO level) a human-readable summary of all resolved configuration values.static RedisgetInstance(String dataType) Returns a unique Redis helper instance for the specified Redis data type.booleangetKeyExistsStatus(String key) Checks whether the specified Redis key exists.longgetKeysCountByPattern(String keyPattern) Returns the number of Redis keys matching the specified pattern.getKeyType(String key) Returns the Redis data type of the specified key.longReturns the number of records stored under the specified Redis key.longgetTtlByKey(String key) Returns the remaining TTL (time-to-live) of the specified Redis key.net.bugreaper.core.assertable.AssertableStringListgrabRecordsByKey(String key) Retrieves all records stored under the specified Redis key.voidseeKeyExists(String key) Asserts that the specified Redis key exists.voidseeKeysCountByPatternIsExactly(String keyPattern, long expectedCount) Asserts that the number of Redis keys matching the specified pattern is exactly the expected count.voidseeKeysCountByPatternIsGreaterThan(String keyPattern, long minCount) Asserts that the number of Redis keys matching the specified pattern is greater than the given value.voidseeKeysCountByPatternIsLessThan(String keyPattern, long maxCount) Asserts that the number of Redis keys matching the specified pattern is less than the given value.voidseeKeyTypeIs(String key, String type) Asserts that the specified Redis key has the expected data type.voidseeRecordsCountByKeyIsExactly(String key, long expectedCount) Asserts that the number of records in the Redis key is exactly the expected value.voidseeTtlIsGreaterThan(String key, int minTtl) Asserts that the key TTL is greater than the specified value.voidseeTtlIsLessThan(String key, int maxTtl) Asserts that the key TTL is less than the specified value.setAwaitMs(int awaitMs) Configures the global await timeout for assertions and operations that use await.
-
Constructor Details
-
Redis
This constructor initializes client for interaction with Redis- Parameters:
host- host of Redis"localhost"port- port of Redisusername- admin usernamepassword- admin passworddataType- Redis data type"list","hash","string","set","zset"
-
-
Method Details
-
getInstance
Returns a unique Redis helper instance for the specified Redis data type.This method implements the Multiton pattern. A separate singleton instance is created for each Redis data type. Subsequent calls with the same data type return the already created instance.
Supported types:
listhashstringsetzsetstream
Loads configuration values from a YAML file.
Default file:
bugreaper.ymlCustom file: using
-DbugreaperEnv=testloadsbugreaper-test.ymlmodules: redis: host: localhost port: 6379 username: admin password: admin_pass await: 300 # optional- Parameters:
dataType- Redis data type used to select the required helper- Returns:
- unique
Redisinstance associated with the specified Redis data type - Throws:
RedisHelperException- if the specified Redis data type wrong or not supported
-
setAwaitMs
Description copied from interface:RedisConfigConfigures the global await timeout for assertions and operations that use await.- Specified by:
setAwaitMsin interfaceRedisConfig- Parameters:
awaitMs- await timeout in milliseconds- Returns:
- this instance for method chaining
-
getConfigSummary
Description copied from interface:RedisConfigReturns and logs (at INFO level) a human-readable summary of all resolved configuration values.The summary includes values loaded from the YAML configuration file as well as any fields overridden programmatically after construction. Optional fields that were not present in the configuration and resolved via default values may also be included.
- Specified by:
getConfigSummaryin interfaceRedisConfig- Returns:
- String with summary
-
addRecord
Description copied from interface:RedisHelperIntAdds a record to Redis using the configured Redis data type helper.The storage operation depends on the Redis data type
- LIST - appends a new element to the list
- HASH - stores a value in the hash by key:id
- STRING - stores or replaces the string value
- SET - appends a new element to the set (duplicates ignored)
- ZSET - appends a new element to the zset by key:score (duplicates ignored)
- STREAM - appends a new JSON element to the stream
- Specified by:
addRecordin interfaceRedisHelperInt- Parameters:
key- Redis keyvalue- value to store in Redis
-
addRecord
Description copied from interface:RedisHelperIntAdds a record to Redis with an expiration time.The storage operation depends on the Redis data type
- LIST - appends a new element to the list, TTL for all list
- HASH - stores a value in the hash by key:id, TTL for all hash
- STRING - stores or replaces the string value, TTL for key
- SET - stores a value in the hash by key, TTL for all set
- ZSET - appends a new element to the zset by key:score, TTL for all zset
- STREAM - appends a new JSON element to the stream, TTL for all stream
- Specified by:
addRecordin interfaceRedisHelperInt- Parameters:
key- Redis keyvalue- value to store in RedisttlSeconds- time to live in seconds
-
cleanAll
public void cleanAll()Description copied from interface:RedisHelperIntRemoves ALL data from current Redis database.WARNING: This operation deletes every key from selected Redis DB.
- Specified by:
cleanAllin interfaceRedisHelperInt
-
deleteKeysByPattern
Description copied from interface:RedisHelperIntDeletes 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:
deleteKeysByPatternin interfaceRedisHelperInt- Parameters:
keyPattern- Redis key pattern or exact key
-
grabRecordsByKey
Description copied from interface:RedisHelperIntRetrieves all records stored under the specified Redis key.Uses await until the key exists.
The returned records depend on the configured Redis data type:
- LIST - returns list elements
- HASH - returns hash values
- STRING - returns a single value as a list
- SET - returns set elements
- ZSET - returns zset elements
- STREAM - returns stream elements - records are represented as JSON strings
Examples:
grabRecordsByKey("users:admins") .seeListAnyEquals("John");- Specified by:
grabRecordsByKeyin interfaceRedisHelperInt- Parameters:
key- Redis key- Returns:
AssertableStringListlist of stored records
-
getRecordsCountByKey
Description copied from interface:RedisHelperIntReturns the number of records stored under the specified Redis key.The returned count depend on the configured Redis data type:
- LIST - returns elements count in list
- HASH - returns values count in hash
- STRING - stores only a single value per key
- SET - returns values count in set
- ZSET - returns values count in zset
- STREAM - returns values count in stream
- Specified by:
getRecordsCountByKeyin interfaceRedisHelperInt- Parameters:
key- Redis key- Returns:
- number of records stored under the key
-
getKeysCountByPattern
Description copied from interface:RedisHelperIntReturns 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:
getKeysCountByPatternin interfaceRedisHelperInt- Parameters:
keyPattern- Redis key pattern- Returns:
- number of matching Redis keys
-
getKeyExistsStatus
Description copied from interface:RedisHelperIntChecks whether the specified Redis key exists.The method works with any Redis data type, including LIST, STRING, HASH, SET, ZSET, and STREAM.
- Specified by:
getKeyExistsStatusin interfaceRedisHelperInt- Parameters:
key- Redis key- Returns:
trueif the key exists, otherwisefalse
-
getTtlByKey
Description copied from interface:RedisHelperIntReturns the remaining TTL (time-to-live) of the specified Redis key.- Specified by:
getTtlByKeyin interfaceRedisHelperInt- Parameters:
key- Redis key- Returns:
- remaining TTL in seconds
-
getKeyType
Description copied from interface:RedisHelperIntReturns the Redis data type of the specified key.Possible return values:
stringlistsetzsethashstreamnone(key does not exist)
- Specified by:
getKeyTypein interfaceRedisHelperInt- Parameters:
key- Redis key- Returns:
- Redis data type or
noneif the key does not exist
-
seeKeyExists
Description copied from interface:RedisHelperIntAsserts 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:
seeKeyExistsin interfaceRedisHelperInt- Parameters:
key- Redis key
-
seeKeyTypeIs
Description copied from interface:RedisHelperIntAsserts that the specified Redis key has the expected data type.Supported Redis data types:
stringlistsetzsethashstream
Examples:
seeKeyTypeIs("users:1", "string"); seeKeyTypeIs("users:admins", "list"); seeKeyTypeIs("users", "hash");- Specified by:
seeKeyTypeIsin interfaceRedisHelperInt- Parameters:
key- Redis keytype- expected Redis data type
-
seeRecordsCountByKeyIsExactly
Description copied from interface:RedisHelperIntAsserts 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:
seeRecordsCountByKeyIsExactlyin interfaceRedisHelperInt- Parameters:
key- Redis keyexpectedCount- expected number of records
-
seeKeysCountByPatternIsExactly
Description copied from interface:RedisHelperIntAsserts that the number of Redis keys matching the specified pattern is exactly the expected count.Uses await.
- Specified by:
seeKeysCountByPatternIsExactlyin interfaceRedisHelperInt- Parameters:
keyPattern- Redis key patternexpectedCount- expected number of keys
-
seeTtlIsGreaterThan
Description copied from interface:RedisHelperIntAsserts that the key TTL is greater than the specified value.- Specified by:
seeTtlIsGreaterThanin interfaceRedisHelperInt- Parameters:
key- Redis keyminTtl- minimum expected TTL in seconds
-
seeTtlIsLessThan
Description copied from interface:RedisHelperIntAsserts that the key TTL is less than the specified value.- Specified by:
seeTtlIsLessThanin interfaceRedisHelperInt- Parameters:
key- Redis keymaxTtl- maximum expected TTL in seconds
-
seeKeysCountByPatternIsGreaterThan
Description copied from interface:RedisHelperIntAsserts that the number of Redis keys matching the specified pattern is greater than the given value.Uses await.
- Specified by:
seeKeysCountByPatternIsGreaterThanin interfaceRedisHelperInt- Parameters:
keyPattern- Redis key patternminCount- minimum expected number of keys
-
seeKeysCountByPatternIsLessThan
Description copied from interface:RedisHelperIntAsserts that the number of Redis keys matching the specified pattern is less than the given value.Uses await.
- Specified by:
seeKeysCountByPatternIsLessThanin interfaceRedisHelperInt- Parameters:
keyPattern- Redis key patternmaxCount- maximum expected number of keys
-