Note: version 5.0 preview is the next upcoming version that is under test.
Supported Docker Versions:
Docker version 17 or greater
Getting Started and Documentation
- Working with Redis Enterprise Pack and Docker
- Getting Started with Redis Enterprise Pack and Docker on Windows,
- Getting Started with Redis Enterprise Pack and Docker on Mac OSx,
- Getting Started with Redis Enterprise Pack and Docker on Linux
- Setting up a Redis Enterprise Pack Cluster
- How To Guides
What is Redis Enterprise Pack (RP)?
Redis Enterprise Pack is enterprise grade, highly available, scalable, distributed, in-memory NoSQL database server, fully compatible with open source Redis by Redis Labs.
Note: Open source Redis applications transparently work against Redis Enterprise Pack. Simply change your connections to point at Redis Enterprise Pack database endpoint...
Redis Enterprise Pack extends open source Redis and delivers stable high performance, zero-downtime linear scaling and high availability, with significant operational savings.
Redis Enterprise Pack also augments Redis databases with the capability to use a combination of RAM and cost-effective Flash memory (a.k.a Redis Enterprise Flash), retaining the same sub-millisecond latencies of Redis while storing larger datasets at drastically lower costs.
Quick Start with Redis Enterprise Pack Container
Note: This is a preview image for Redis Enterprise Pack version 4.4. The image is not intended for production use and only suitable for development for test purposes
Note: With the preview image, It is important to note that RP Docker image works best when you provde a minimum of 2 cores and 6GB ram per container. You can find additional minimum hardware and software requirements for Redis Enterprise Pack in the product documentation
You can run the Redis Enterprise Pack container linux based container in MacOS, various Linux and Windows based machines with Docker. Each Redis Enterprise Pack container runs a cluster node. To get started, you can simply set up a one node cluster, create a database and connect your application to the database.
- Step-1: Start Redis Enterprise Pack container
docker run -d --cap-add sys_resource --name rp -p 8443:8443 -p 12000:12000 redislabs/redis
- Step-2: Setup Redis Enterprise Pack by visiting
https://localhost:8443on the host machine to see the RP Web Console.
Note: You may see a certificate error depending on your browser. Simply choose "continue to the website" to get to the setup screen.
- Step-3: Go with default settings and provide only a cluster FQDN: "cluster.local"
- Step-4: Click "Next" to skip the license key screen if you don't have a license key to try the free version of the product. On the next screen, set up a cluster admin email and password.
- Step-5: Choose the new redis db option. In the new redis db screen, click the "show advanced option" link and provide a database name "database1", endpoint port number of "12000" and click "Activate" to create your database.
You now have a Redis database!
Connecting to the Redis Database
With the Redis database created, you are ready to connect to your database to store data.
- Connect using redis-cli: Read and Write Data using
redis-cli is a simple commandline tool to interact with a Redis instance. Use the following script to connect to the Redis Enterprise Pack container, run redis-cli connecting to port 12000 and store and retrieve a key.
docker exec -it rp bash # sudo /opt/redislabs/bin/redis-cli -p 12000 # 127.0.0.1:16653> set key1 123 # OK # 127.0.0.1:16653> get key1 # "123"
- Connect using a Simple Python App: Read and Write Data using a few lines of Python code
A simple Python app running in the host machine can also connect to the database1 created Redis Enterprise Pack container. The following section assumes you already have Python and redis-py (Python library for connecting to Redis) configured on the host machine running the container. You can find the instructions to configure redis-py on the github page for redis-py
Paste the following into a file named
import redis r = redis.StrictRedis(host='localhost', port=12000, db=0) print ("set key1 123") print (r.set('key1', '123')) print ("get key1") print(r.get('key1'))
redis_test.py application to connect to the database and store and retrieve a key.
The output should look like the following screen if the connection is successful.
# set key1 123 # True # get key1 # b'123'
Common Topologies with Redis Pack with Docker Containers
Redis Enterprise Pack (RP) can be deployed using this container on Windows, macOS and Linux based systems. RP container represents a node in an RP Cluster. When deploying RP using Docker, there are a couple of common topologies.
Topology#1: The simplest topology is to run single node RP Cluster with a single container in a single host machine. This is best for local development or functional testing. This topology is depicted under Topology#1 below. Simply follow the instruction in the getting started pages for Windows and macOS and Linux pages.
Topology#2: You may also run multi-node RP cluster with multiple rp containers all deployed to a single host machine. This topology is similar to the previous setup except you run a multi node cluster to developer and test against a system that scale-minimized but similar to your production RP deployment. It is important to note that the topology, under load causes the containers to interfere with each other, thus is not recommended if you are looking for predictable performance.
Topology#3: You may also run multi-node RP cluster with multiple RP containers each deployed to its own host machine. This topology minimizes interference between RP containers so performs more predictably compared to topology#2. This topology is depicted under Topology#3 below.
- Possible error when creating a database: "Cannot allocate nodes for shards" - With the preview image, if you don't configure the memory limit high enough, you may see an error when creating a database that reads : "Cannot allocate nodes for shards". It is important to note that RP Docker image works best when you provide a minimum of 2 cores and 6GB ram per container. You can work around the issue by increasing the RAM allocated to the container either through Docker preferences on your machine or by specifying the -m option with docker run command. You can find additional minimum hardware and software requirements for Redis Enterprise Pack in the product documentation
Azelada, you could try using kubernetes for creating a cluster. checkout this repo https://github.com/kelseyhightower/redis-enterprise-on-kubernetes . However there is one issue with it, if the first pod get re-scheduled it will go ahead and create a new cluster rather than join the existing cluster.
Hi arunmat, I have the same issue, I was trying to solve this with attach container to swarm but I cant to join thw new node to the cluster.
Hi, I' trying to setup topology #3 using docker swarm. I have hit a blocker as 'cap_add sys_resource' is required while running the container which is not available in swarm service yet. any workaround for this?