Skip to content

Instantly share code, notes, and snippets.

@philipefarias
Forked from josegonzalez/redis_migrate.py
Last active August 5, 2022 20:32
Show Gist options
  • Save philipefarias/e77e94b28223ba4c606fe941d0dd26ba to your computer and use it in GitHub Desktop.
Save philipefarias/e77e94b28223ba4c606fe941d0dd26ba to your computer and use it in GitHub Desktop.
A simple script to migrate all keys from one Redis to another
#!/usr/bin/env python
import argparse
import redis
def connect_redis(conn_string):
conn = redis.StrictRedis(conn_string)
return conn
def migrate_redis(source, destination):
src = connect_redis(source)
dst = connect_redis(destination)
for key in src.keys('*'):
ttl = src.ttl(key)
# we handle TTL command returning -1 (no expire) or -2 (no key)
if ttl < 0:
ttl = 0
print "Dumping key: %s" % key
value = src.dump(key)
print "Restoring key: %s" % key
try:
dst.restore(key, ttl * 1000, value, replace=True)
except redis.exceptions.ResponseError:
print "Failed to restore key: %s" % key
pass
return
def run():
parser = argparse.ArgumentParser()
parser.add_argument('source', type=string)
parser.add_argument('destination', type=string)
options = parser.parse_args()
migrate_redis(options.source, options.destination)
if __name__ == '__main__':
run()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment