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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM