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:// or rediss:// for TLS)
  • Network connectivity between Zeotap and the Redis instance
  • Sufficient memory on the Redis instance for the expected data volume

Authentication

Connection URL

  1. Navigate to Destinations in the left sidebar and click Add Destination
  2. Select Redis from the destination list
  3. Enter the Connection URL in the format redis://[:password@]host:port[/db]
    • For TLS connections, use rediss:// (note the double s)
    • Example: redis://:mypassword@redis.example.com:6379/0
  4. Click Test Connection to verify connectivity

Configuration

FieldTypeRequiredDescription
Key PrefixTextNoOptional prefix prepended to all Redis keys (e.g., user: produces keys like user:12345)
Data FormatSelectYesHow 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)NumberNoTime-to-live for keys in seconds. Leave empty or 0 for no expiration

Target Settings

FieldTypeRequiredDescription
DatabaseNumberNoRedis database number (0–15). Defaults to the database specified in the connection URL, or 0
Key FieldTextNoRow field to use as the Redis key. Defaults to the primary key if not specified

Supported Operations

Sync Modes

ModeSupportedDescription
UpsertYesCreates new keys or overwrites existing keys with the latest data
InsertYesWrites all rows to Redis (SET/HSET is inherently an upsert in Redis)
UpdateYesOverwrites existing keys with new data
MirrorYesWrites 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

  1. Each row is serialized as a JSON object
  2. The Redis key is constructed as {key_prefix}{key_field_value} (e.g., user:12345)
  3. The JSON string is written using the Redis SET command
  4. 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

  1. Each field in the row becomes a separate hash field
  2. The Redis key is constructed as {key_prefix}{key_field_value}
  3. All fields are written using the Redis HSET command
  4. 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 DEL command

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.