老大讓把 一台機器上 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