zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    SpringBoot-源码解析
    SpringBoot快速部署
    vue.js
    数据库设计--三范式
    mysql 建表及练习
    索引复制迁移
    nginx检查、重启、、、
    设计模式--Strategy 策略模式
    设计模式--设计原则
    设计模式--Template Method(模板方法)
  • 原文地址:https://www.cnblogs.com/lesliefang/p/4711204.html
Copyright © 2011-2022 走看看