Skip to content

Redis keyspace cheat sheet

Inventory of every Redis key prefix used by the Evospin platform, with purpose and source. Cache Redis runs on port 6379 (password cache); the bot Redis on 6380 (password bot) is separate and used only by apps/api/src/bots/.

Prefix Purpose Source
bull:* BullMQ queues (sessions, bets, bots, leaderboard, promo-expired, rakeback, skindeck, SpeedRoulette*) @nestjs/bullmq
throttler:* Sliding-window counters (Lua evalsha) global Nest throttler
USER_DETAILS_* 60 s admin user cache user/const.ts
ONLINE_USERS_KEY zset member=userId, score=last-warm-up epoch ms · TTL sweep every minute apps/rt/src/online-tracker/
auth-session:<userId>:* Active session metadata session.service.ts
user:password-reset-cooldown:<email> 40 s cooldown; only written when user exists (sign-in timing oracle twin) user.service.ts:846-870
user_lockout:<email> + user_attempts:<email> Sign-in rate limit (SF-002 counter-reset bug — see ../weaknesses-register.md) user.service.ts:920-947
gateway pub/sub channels (server_channel_event.*, private_channel_event.*, client_channel_event.*) Nest microservice transport — no traceparent, see ../weaknesses-register.md AF-2 @app/gateway
profile-notifier channel ProfileNotifierService.onProfileUpdated → rt force-disconnect on ban user/profile-notifier.service.ts
  • BullMQ design (why BullMQ + Redis, not RabbitMQ): ADR-0003.
  • Throttler internals: libs/ws-throttler/ source + ../api-reference/index.md §"Top gotchas" #5.
  • Trace propagation gap on the gateway pub/sub channels: ADR-0005.
  • For the full data model (Postgres entities + relationships): see the per-domain ERDs in README.md.