UNPKG

@o1s/redis-testbench

Version:

Redis (single instance and cluster) test bench

105 lines (87 loc) 2.69 kB
# Redis Test Bench Provide means to spin up & connect to: * a redis instance, * a redis cluster, composed of 3 shards, with 1 replica each, * a set of monitors, that logs: * (almost all) redis commands, * expiring entries. Note that the `npm` package only adds a simple function to create an `IORedis` client, for either standalone Redis instance or for the Redis Cluster. ## Installation To be able to connect to the redis instance or cluster: `npm install @o1s/redis-testbench` You can use the exported function `buildClient`, which will return an IORedis client (for standalone Redis instance or for a Redis Cluster). To boot the services, clone this repo and read the title `Redis and Redis Cluster services` below. ## Connectivity ### Connecting to Redis services * The single redis service is available: * outside docker-compose: as `localhost:6379` * inside docker-compose: as `redis:6379` * The redis-cluster services are available: * outside docker-compose: `localhost:6380` to `localhost:6385` (requires nat support if ioredis is used). * inside docker-compose: as `redis-node-0:6379` to `redis-node-5:6379`. ### API Provided * `buildClient` returns the required redis client (either for a single Redis instance or for the Redis Cluster). * `buildOptionsFromEnv` builds the required options from env vars. ## Redis and Redis Cluster services Docker and Docker Compose services should be started from a git clone of this repo, not from the `npm install`ed. To start all redis and redis cluster services: ``` . .setup.sh docker-compose up --build ``` To start the redis instance alone: ``` docker-compose up --build redis redis-monitor redis-watch-expirations ``` To start only the redis cluster (6 nodes: 3 primaries + 1 replica each): ``` . .setup.sh docker-compose up --build \ redis-node-0 \ redis-node-1 \ redis-node-2 \ redis-node-3 \ redis-node-4 \ redis-node-5 \ redis-monitor-0 \ redis-monitor-1 \ redis-monitor-2 \ redis-monitor-3 \ redis-monitor-4 \ redis-monitor-5 \ redis-watch-expirations-0 \ redis-watch-expirations-1 \ redis-watch-expirations-2 \ redis-watch-expirations-3 \ redis-watch-expirations-4 \ redis-watch-expirations-5 ``` * `redis-node-*`: these are the actual redis services * `redis-monitor-*`: these will list (almost all) redis commands * `redis-watch-expirations-*`: these will list entry expirations. To do a clean start state: ``` . .setup.sh docker-compose down; docker-compose rm -f \ redis-node-0 \ redis-node-1 \ redis-node-2 \ redis-node-3 \ redis-node-4 \ redis-node-5; docker-compose up --build; ``` The commands above can be run with: ``` bash -i start.sh ```