redis 数据库迁移

老大让把 一台机器上 redis 中所有的数据,迁移到另一台机器上

查了一下可以拷贝 rdb 文件, 此方法只适用于迁移到一个新的库, 迁移到正在使用的库就不行了, 而且 rdb 里面是所有的 db, 你只想迁移某一个 db 也是不行的。

设置 master  slave 也是可以的, 数据会自动同步,也很简单

最笨最容易想到的方法当然是写个脚本,从原库中读出所有数据,写入到另外一个库中

# coding=utf-8
import redis

redis_from = redis.StrictRedis(host='127.0.0.1', port=6379, db=10)
redis_to = redis.StrictRedis(host='127.0.0.1', port=6379, db=0)

if __name__ == '__main__':
    cnt = 0
    for k in redis_from.keys():
        data_type = redis_from.type(k)

        if data_type == 'string':
            v = redis_from.get(k)
            redis_to.set(k, v)

        elif data_type == 'list':
            values = redis_from.lrange(k, 0, -1)
            redis_to.lpush(k, values)

        elif data_type == 'set':
            values = redis_from.smembers(k)
            redis_to.sadd(k, values)

        elif data_type == 'hash':
            keys = redis_from.hkeys(k)
            for key in keys:
                value = redis_from.hget(k, key)
                redis_to.hset(k, key, value)

        else:
            print 'not known type'

        cnt = cnt + 1

    print 'total', cnt

info 命令可以查看 key 的总数量,以确保所有数据都写入成功

# Keyspace
db0:keys=41,expires=0,avg_ttl=0
db10:keys=1,expires=1,avg_ttl=80109567

原文地址:https://www.cnblogs.com/lesliefang/p/4711204.html