Create a file named producer.py:
import redis
import time
from datetime import datetime
# Connect to Redis
r = redis.Redis(host='localhost', port=6379, decode_responses=True)
# Event stream name
STREAM_KEY = "events:stream"
# Sample events to simulate
events = [
{"event_type": "user_signup", "user_id": 101, "country": "US"},
{"event_type": "user_login", "user_id": 102, "country": "CA"},
{"event_type": "purchase", "user_id": 103, "country": "GB"},
{"event_type": "user_logout", "user_id": 101, "country": "US"},
{"event_type": "purchase", "user_id": 104, "country": "DE"},
]
print("Redis Event Producer")
print("=" * 50)
print(f"Publishing events to stream: {STREAM_KEY}")
print()
# Publish events
for idx, event in enumerate(events, 1):
event_data = {
"event_id": idx,
"event_type": event["event_type"],
"user_id": event["user_id"],
"event_timestamp": datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
"country": event["country"],
}
# Add to Redis stream
stream_id = r.xadd(STREAM_KEY, event_data)
print(f"✓ Event {idx}: {event['event_type']} (user={event['user_id']}, id={stream_id})")
time.sleep(0.5) # Small delay between events
print()
print(f"✓ {len(events)} events published to Redis stream")