Skip to content

Backup & Restore your Redis server - FAST

License

yannh/redis-dump-go

Repository files navigation

Build status go report card

Redis-dump-go

Dump Redis keys to a file. Similar in spirit to https://www.npmjs.com/package/redis-dump and https://github.com/delano/redis-dump but:

  • Will dump keys across several processes & connections
  • Uses SCAN rather than KEYS * for much reduced memory footprint with large databases
  • Easy to deploy & containerize - single binary.
  • Generates a RESP file rather than a JSON or a list of commands. This is faster to ingest, and recommended by Redis for mass-inserts.

Warning: like similar tools, Redis-dump-go does NOT provide Point-in-Time backups. Please use Redis backups methods when possible.

Features

  • Dumps all databases present on the Redis server
  • Keys TTL are preserved by default
  • Configurable Output (Redis commands, RESP)
  • Redis password-authentication

Installation

Download the appropriate version for your operating system on ŧhe release page, or use the Docker image:

$ docker run ghcr.io/yannh/redis-dump-go:latest -h Usage of /redis-dump-go: [...]

Bandwidth costs: Redis-dump-go is hosted on on Github Container Registry which is currently in Beta. During that period, bandwidth is free. After that period, a Github Account might be required / bandwidth costs might be applicable.

Run

$ ./bin/redis-dump-go -h Usage of ./bin/redis-dump-go: -batchSize int HSET/RPUSH/SADD/ZADD only add 'batchSize' items at a time (default 1000) -db uint only dump this database (default: all databases) -filter string Key filter to use (default "*") -host string Server host (default "127.0.0.1") -n int Parallel workers (default 10) -noscan Use KEYS * instead of SCAN - for Redis <=2.8 -output string Output type - can be resp or commands (default "resp") -port int Server port (default 6379) -s Silent mode (disable logging of progress / stats) -ttl Preserve Keys TTL (default true) $ ./bin/redis-dump-go > dump.resp Database 0: 9 element dumped Database 1: 1 element dumped 

For password-protected Redis servers, set the shell variable REDISDUMPGO_AUTH:

$ export REDISDUMPGO_AUTH=myRedisPassword $ redis-dump-go 

Build

Given a correctly configured Go environment:

$ go get github.com/yannh/redis-dump-go $ cd ${GOPATH}/src/github.com/yannh/redis-dump-go $ go test ./... $ go install 

Importing the data

redis-cli --pipe < redis-backup.txt 

Release Notes & Gotchas

  • By default, no cleanup is performed before inserting data. When importing the resulting file, hashes, sets and queues will be merged with data already present in the Redis.

About

Backup & Restore your Redis server - FAST

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors 8