Portworx Documentation has moved to https://docs.portworx.com
Portworx Enterprise version 2.13 has reached end of life and end of extended maintenance. Refer to the release support policy doc here.
Upgrade to the latest version of Portworx Enterprise for continued support. Documentation for the latest version of Portworx Enterprise can be found here.

Redis


This page provides instructions for deploying Redis with Portworx on Docker standalone.

Create a storage volume for Redis

To create a Portworx storage volume for Redis, use the docker volume create command:

docker volume create -d pxd --name=redis_vol --opt \
     	size=4 --opt block_size=64 --opt repl=1 --opt fs=ext4

Start the Redis container

To start the Redis container using the redis_vol volume created above, run the command below. (Use the Docker `-v’ option to attach the Portworx volume to the /data directory, which is where Redis stores its data).

docker run --name some-redis  -v redis_vol:/data --volume-driver=pxd  -d redis redis-server --appendonly yes

Your Redis container is now available for use on port 6379.

Start the redis CLI client container

docker run -it --link some-redis:redis --rm redis redis-cli -h redis -p 6379

Populate the redis instance with some data

set foo 100
OK
incr foo
(integer) 101
append foo abcxxx
(integer) 9
get foo
"101abcxxx"
redis:6379>

Kill the “some-redis” instance

docker kill some-redis

Start a new redis-server instance with volume persistence

Start another redis-server container called other-redis using the original redis_vol to show data persistence.

docker run --name other-redis  -v redis_vol:/data --volume-driver=pxd  -d redis redis-server --appendonly yes

Start a redis CLI container

Connect to the new other-redis container with the following command.

docker run -it --link other-redis:redis --rm redis redis-cli -h redis -p 6379

See that the original data has persisted

get foo
"101abcxxx"

Create snapshot of your volume

You can create container-granular snapshots, by saving just this container’s state. Snapshots are then immediately available as a volume.

Create a snapshot of the redis_vol volume using pxctl.

pxctl volume list
ID			NAME		SIZE	HA	STATUS
416765532972737036	redis_vol	2.0 GiB	1	up - attached on 3abe5484-756c-4076-8a80-7b7cd5306b28
pxctl snap create 416765532972737036
Volume successfully snapped:  3291428813175937263

Update the volume with new data

docker run -it --link other-redis:redis --rm redis redis-cli -h redis -p 6379
get foo
"101abcxxx"
set foo foobar
OK
get foo
"foobar"

See that the snapshot volume still contains the original data

docker run --name snap-redis -v 3291428813175937263:/data --volume-driver=pxd -d redis redis-server --appendonly yes
940d2ad6b87df9776e26d29e746eb05fb6081c0e6019d46ba77915d7c8305308
docker run -it --link snap-redis:redis --rm redis redis-cli -h redis -p 6379
get foo
"101abcxxx"
redis:6379>

Last edited: Tuesday, May 16, 2023