Redis
Send data to Redis for real-time caching, profile lookups, and low-latency data access. Zeotap writes user profiles, model results, and enriched records to Redis using SET or HSET operations, enabling sub-millisecond reads from your application layer.
Prerequisites
- A Redis instance (self-managed, Redis Cloud, Amazon ElastiCache, Azure Cache for Redis, or Google Cloud Memorystore)
- A Redis connection URL (
redis://orrediss://for TLS) - Network connectivity between Zeotap and the Redis instance
- Sufficient memory on the Redis instance for the expected data volume
Authentication
Connection URL
- Navigate to Destinations in the left sidebar and click Add Destination
- Select Redis from the destination list
- Enter the Connection URL in the format
redis://[:password@]host:port[/db]- For TLS connections, use
rediss://(note the doubles) - Example:
redis://:mypassword@redis.example.com:6379/0
- For TLS connections, use
- Click Test Connection to verify connectivity
Configuration
| Field | Type | Required | Description |
|---|---|---|---|
| Key Prefix | Text | No | Optional prefix prepended to all Redis keys (e.g., user: produces keys like user:12345) |
| Data Format | Select | Yes | How row data is stored: String (JSON) stores the entire row as a JSON string via SET; Hash stores each field as a hash field via HSET. Default: String (JSON) |
| TTL (seconds) | Number | No | Time-to-live for keys in seconds. Leave empty or 0 for no expiration |
Target Settings
| Field | Type | Required | Description |
|---|---|---|---|
| Database | Number | No | Redis database number (0–15). Defaults to the database specified in the connection URL, or 0 |
| Key Field | Text | No | Row field to use as the Redis key. Defaults to the primary key if not specified |
Supported Operations
Sync Modes
| Mode | Supported | Description |
|---|---|---|
| Upsert | Yes | Creates new keys or overwrites existing keys with the latest data |
| Insert | Yes | Writes all rows to Redis (SET/HSET is inherently an upsert in Redis) |
| Update | Yes | Overwrites existing keys with new data |
| Mirror | Yes | Writes added/changed rows and deletes removed keys |
Audience Sync Modes
Redis does not support audience sync modes. Use regular sync modes to write audience membership data as key-value pairs.
Features
- Field Mapping: Yes — map source columns to Redis hash fields or JSON keys
- Schema Introspection: No — Redis is schemaless
How It Works
Zeotap writes each row to Redis using the configured data format:
String (JSON) Format
- Each row is serialized as a JSON object
- The Redis key is constructed as
{key_prefix}{key_field_value}(e.g.,user:12345) - The JSON string is written using the Redis
SETcommand - If a TTL is configured, the key expiration is set automatically
// Example: SET user:12345
{
"user_id": "12345",
"email": "jane@example.com",
"name": "Jane Doe",
"segment": "high_value"
}Hash Format
- Each field in the row becomes a separate hash field
- The Redis key is constructed as
{key_prefix}{key_field_value} - All fields are written using the Redis
HSETcommand - If a TTL is configured, the key expiration is set automatically
// Example: HSET user:12345
user_id -> "12345"
email -> "jane@example.com"
name -> "Jane Doe"
segment -> "high_value"Batch Processing
- Rows are written using Redis pipelines for efficiency (up to 500 commands per pipeline)
- Pipeline execution is atomic per batch — all commands in a pipeline are sent in a single network round trip
- Failed individual commands are tracked and reported as row-level errors
Mirror Mode
When using Mirror sync mode, Zeotap handles the full lifecycle:
- Added and Changed rows are written using SET/HSET
- Removed rows are deleted using the Redis
DELcommand
Rate Limits
Redis itself does not impose rate limits. Performance is bounded by:
- Network bandwidth between Zeotap and the Redis instance
- Memory capacity of the Redis instance
- Connection pool size (Zeotap uses a pool of 10 connections by default)
For large datasets, ensure your Redis instance has sufficient memory. Monitor memory usage with the INFO memory command or your cloud provider’s dashboard.
Best Practices
- Use key prefixes to namespace your data and avoid key collisions with other applications sharing the same Redis instance
- Set TTLs for cache-like use cases to prevent unbounded memory growth
- Choose the right data format: Use Hash when your application reads individual fields (e.g.,
HGET user:123 email); use String (JSON) when you always read the full record - Monitor memory usage — Redis evicts keys when memory is full (depending on
maxmemory-policy) - Use TLS (
rediss://) for connections over public networks - Size your instance based on the number of records times the average record size, plus overhead
Troubleshooting
Connection refused
Verify the Redis host and port in the connection URL. Ensure the Redis instance is running and accepting connections. For cloud-hosted Redis, check that the security group or firewall allows inbound connections from Zeotap’s IP addresses.
Authentication failed (NOAUTH / invalid password)
The password in the connection URL does not match the Redis instance’s requirepass setting. Double-check the password. For Redis ACLs (Redis 6+), ensure the user has permissions to execute SET, HSET, DEL, EXPIRE, and PING commands.
Connection timed out
The Redis instance may be unreachable due to network configuration. For cloud-hosted Redis (ElastiCache, Memorystore), ensure the instance is in the same VPC or has a VPC peering connection. Check that DNS resolution is working for the hostname.
WRONGTYPE Operation against a key holding the wrong kind of value
This occurs when the key already exists with a different data type (e.g., you’re writing a hash to a key that currently holds a string, or vice versa). Delete the conflicting keys manually or change the Key Prefix to avoid collisions.
OOM command not allowed when used memory exceeds maxmemory
The Redis instance has run out of memory. Increase the instance size, set a shorter TTL to expire old keys, or reduce the number of records being synced. Check the maxmemory-policy setting — allkeys-lru will evict old keys automatically.
Keys not appearing after sync
Verify the Key Prefix and Key Field settings. Check that the primary key field contains non-empty values. Use redis-cli KEYS "prefix*" (for debugging only — not recommended in production) or SCAN to verify keys exist.
TLS handshake failed
Ensure you are using rediss:// (with double s) for TLS connections. For self-signed certificates, contact support for custom CA configuration. Some cloud providers require TLS — check your provider’s documentation.