API Usage
Comprehensive guide to using the BoxLang Redis Module API for advanced caching and data management in BoxLang applications.
🔌 Overview
If you need more power or are familiar with the Redis Java API and want to use features beyond the standard cache interface, the bx-redis module provides direct access to the underlying Redis connections and providers. Behind the scenes, the module leverages the Jedis library for Redis connectivity.
This page documents the low-level API functions available for advanced Redis operations.
🛠️ Available Functions
The module provides several global BoxLang functions to access the underlying Redis infrastructure:
redisGetProvider()
Get the cache provider implementation
IRedisCache interface
redisGetConnectionPool()
Get the Jedis connection pool (non-clustered)
JedisPool
redisGetCluster()
Get the Redis cluster connection
JedisCluster
redisGetClusterNodes()
Get map of cluster node connections
Map<String, JedisPool>
📋 Function Reference
redisGetProvider()
Returns the BoxLang Redis cache provider implementation. This gives you access to the IRedisCache interface, which extends BoxLang's standard ICacheProvider with Redis-specific functionality.
Syntax:
provider = redisGetProvider( [ cacheName ] )Parameters:
cacheName
string
No
"default"
The name of the configured Redis cache
Returns: ortus.boxlang.modules.redis.cache.IRedisCache
Throws: InvalidCacheType if the specified cache is not a Redis cache
Example:
Use Cases:
Accessing Redis-specific cache operations
Getting cache statistics and metadata
Performing bulk operations
Direct cache provider manipulation
redisGetConnectionPool()
Returns the Jedis connection pool for non-clustered Redis caches. This provides direct access to the redis.clients.jedis.JedisPool for low-level Redis operations.
Syntax:
Parameters:
cacheName
string
No
"default"
The name of the configured Redis cache (must be non-clustered)
Returns: redis.clients.jedis.JedisPool
Throws:
InvalidCacheTypeif the cache is not a Redis cacheException if called on a clustered cache
Example:
Use Cases:
Direct Jedis API access
Redis commands not exposed through cache interface
Performance-critical operations requiring connection pooling
Custom Redis operations
Important: Always return connections to the pool using jedis.close() or use try-with-resources patterns to prevent connection leaks.
redisGetCluster()
Returns the Redis cluster connection for clustered deployments. Provides access to redis.clients.jedis.JedisCluster for cluster-specific operations.
Syntax:
Parameters:
cacheName
string
No
"default"
The name of the configured Redis cache (must be clustered)
Returns: redis.clients.jedis.JedisCluster
Throws:
InvalidCacheTypeif the cache is not a Redis cacheException if called on a non-clustered cache
Example:
Use Cases:
Cluster-specific Redis commands
Cluster topology inspection
Slot management
Multi-key operations across cluster
redisGetClusterNodes()
Returns a map of all cluster node connections. Each entry provides a JedisPool for a specific cluster node.
Syntax:
Parameters:
cacheName
string
No
"default"
The name of the configured Redis cache (must be clustered)
Returns: Map<String, redis.clients.jedis.JedisPool>
Throws:
InvalidCacheTypeif the cache is not a Redis cacheException if called on a non-clustered cache
Example:
Use Cases:
Node-specific operations
Health checking individual nodes
Gathering per-node statistics
Debugging cluster issues
💡 Advanced Usage Examples
Custom Redis Command Execution
Pipeline Operations
Transaction Support
Cluster Slot Information
Monitoring and Statistics
⚠️ Best Practices
Connection Management
Always close Jedis resources - Use try/finally blocks or BoxLang's try-with-resources
Don't hold connections - Get, use, and return connections quickly
Pool size configuration - Configure appropriate connection pool sizes in your cache settings
Error Handling
Catch Redis-specific exceptions - Handle
JedisExceptionand connection errorsImplement retry logic - For transient network failures
Validate cache type - Check cache is Redis before calling these functions
Performance Considerations
Use pipelining - For bulk operations to reduce round trips
Avoid KEYS command - Use SCAN in production environments
Connection pooling - Reuse connections via the pool
Cluster awareness - Use cluster-aware operations for distributed caches
Security
Protect credentials - Use environment variables for Redis passwords
Limit command access - Use Redis ACLs if available
Network security - Use SSL/TLS for production deployments
Connection validation - Enable pool validation to detect stale connections
🔍 Debugging
Enable Debug Logging
Test Connectivity
Monitor Commands
Last updated
Was this helpful?
