MemoryDB
Protocol: JSON 1.1 (X-Amz-Target: AmazonMemoryDB.*) for management API + Redis RESP protocol for data plane
Management Endpoint: POST http://localhost:4566/
Data Endpoint: localhost:<proxy-port> (TCP)
Floci manages real Valkey/Redis Docker containers and proxies TCP connections to them, so any Redis client works — including IAM-style authentication. MemoryDB is Redis wire-compatible, so it reuses Floci's ElastiCache RESP proxy and SigV4 validator.
Mock Mode
Set FLOCI_SERVICES_MEMORYDB_MOCK=true to manage clusters as control-plane-only resources — no Redis container is started. The management API (CreateCluster, DescribeClusters, tagging, etc.) behaves normally and returns a ClusterEndpoint of <hostname>:6379 (defaults to localhost:6379, controlled by FLOCI_HOSTNAME), but there is no live data plane to connect to. This is intended for Infrastructure-as-Code tools like Terraform and OpenTofu running in environments without a Docker socket, where you only need the AWS resources to exist and return consistent attributes.
Supported Management Actions
| Action | Description |
|---|---|
CreateCluster |
Start a new MemoryDB (Redis/Valkey) cluster |
DescribeClusters |
List clusters and their connection info |
UpdateCluster |
Update mutable cluster attributes (e.g. description) |
DeleteCluster |
Stop and remove a cluster |
ListTags |
List tags for a cluster |
TagResource |
Add tags to a cluster |
UntagResource |
Remove tags from a cluster |
Configuration
| Variable | Default | Description |
|---|---|---|
FLOCI_SERVICES_MEMORYDB_ENABLED |
true |
Enable or disable the service |
FLOCI_SERVICES_MEMORYDB_MOCK |
false |
Track clusters without starting a real Redis container. Useful for IaC tools (Terraform/OpenTofu) when no Docker socket is available |
FLOCI_SERVICES_MEMORYDB_PROXY_BASE_PORT |
6400 |
First host port in the MemoryDB proxy range |
FLOCI_SERVICES_MEMORYDB_PROXY_MAX_PORT |
6419 |
Last host port in the MemoryDB proxy range |
FLOCI_SERVICES_MEMORYDB_DEFAULT_IMAGE |
valkey/valkey:8 |
Docker image for Redis/Valkey containers |
Docker Compose
MemoryDB requires the Docker socket and port range exposure. For private registry authentication and other Docker settings see Docker Configuration.
services:
floci:
image: floci/floci:latest
ports:
- "4566:4566"
- "6400-6419:6400-6419" # MemoryDB proxy ports
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
FLOCI_SERVICES_DOCKER_NETWORK: my-project_default
Examples
export AWS_ENDPOINT_URL=http://localhost:4566
# Create a cluster (starts a Valkey container)
aws memorydb create-cluster \
--cluster-name my-memdb \
--node-type db.t4g.small \
--acl-name open-access \
--endpoint-url $AWS_ENDPOINT_URL
# Get the connection address and port
aws memorydb describe-clusters \
--cluster-name my-memdb \
--query 'Clusters[0].ClusterEndpoint' \
--endpoint-url $AWS_ENDPOINT_URL
# Connect with redis-cli (use the Port from ClusterEndpoint)
redis-cli -h localhost -p 6400 ping
# Delete the cluster
aws memorydb delete-cluster \
--cluster-name my-memdb \
--endpoint-url $AWS_ENDPOINT_URL