当前位置: 首页 > news >正文

福彩网网站建设方案辽宁网站建设企业定制公司

福彩网网站建设方案,辽宁网站建设企业定制公司,wordpress国产插件,劳务合同免费模板下载背景 需求#xff1a;需要将的 Redis 数据迁移由云厂商 A 迁移至云厂商 B问题#xff1a;云版本的 Redis 版本不支持 SYNC、MIGRATE、BGSAVE 等命令#xff0c;使得许多工具用不了#xff08;如 redis-port#xff09; 思路 #xff08;1#xff09;从 Redis A 获取所…背景 需求需要将的 Redis 数据迁移由云厂商 A 迁移至云厂商 B问题云版本的 Redis 版本不支持 SYNC、MIGRATE、BGSAVE 等命令使得许多工具用不了如 redis-port 思路 1从 Redis A 获取所有 key依次导出数据2将导出的数据加载到 Redis B 实现 示例将 127.0.0.1:6379 数据迁移至 127.0.0.1:6380 导出脚本 export.py from optparse import OptionParser import os import redis import logging import sysmylogger None fdata Nonedef new_logger(logger_nameAppName,levellogging.INFO,to_fileTrue,log_file_nameapp.log,format[%(asctime)s] %(filename)s:%(lineno)d %(message)s):if to_file:handler logging.FileHandler(log_file_name)else:handler logging.StreamHandler(sys.stdout)handler.setFormatter(logging.Formatter(format))logger logging.getLogger(logger_name)logger.addHandler(handler)logger.setLevel(level)return loggerdef gen_redis_proto(*args):Write out the string in redis protocol so it can be replayed back laterproto *{0}\\r\\n.format(len(args))for arg in args:proto ${0}\\r\\n.format(len(arg))proto {0}\\r\\n.format(arg)return proto# 只取出指定前缀的 key def match_key(key: str):return key.startswith(normal)def extract(options, fd, logg: logging.Logger):src_r redis.StrictRedis(hostoptions.redis_source_url, portoptions.redis_source_port, dboptions.redis_source_db)all_keys src_r.keys(*)for key in all_keys:key_type arr []try:key key.decode(utf8)if not match_key(key):continuekey_type src_r.type(key).decode(utf8)if key_type hash:arr.append(HMSET)arr.append(key)for k, v in src_r.hgetall(key).items():arr.append(k.decode(utf8))arr.append(v.decode(utf8))elif key_type string:arr.append(SET)arr.append(key)arr.append(src_r.get(key).decode(utf8))elif key_type set:arr.append(SADD)arr.append(key)arr.extend([v.decode(utf8) for v in src_r.smembers(key)])elif key_type list:arr.append(LPUSH)arr.append(key)arr.extend([v.decode(utf8) for v in src_r.lrange(key, 0, -1)])elif key_type zset:arr.append(ZADD)arr.append(key)for member, score in src_r.zrange(key, 0, -1, withscoresTrue):arr.append(str(score))arr.append(member.decode(utf8))else:# TODO 其它的数据类型logg.error(Unsupported key type detected: {}, key: {}.format(key_type, key))continuefd.write(gen_redis_proto(*arr) \n)# 设置 ttlttl src_r.ttl(key)if ttl ! -1:fd.write(gen_redis_proto(*[EXPIRE, key, str(ttl)]) \n)except Exception as e:logg.error(Unsupported key type detected: {}, key: {}, error: {}.format(key_type, key, e.__str__()))if __name__ __main__:parser OptionParser()parser.add_option(-s, --redis-source-url,actionstore,destredis_source_url,helpThe url of the source redis which is to be cloned [required])parser.add_option(-p, --redis-source-port,actionstore,destredis_source_port,default6379,typeint,helpThe port of the source redis which is to be cloned [required, \default: 6379])parser.add_option(-n, --redis-source-db,actionstore,destredis_source_db,default0,typeint,helpThe db num of the source redis[required, default: 0])parser.add_option(-o, --redis-data-output-file-name,actionstore,destredis_data_output_file_name,defaultredis.data,typestr,helpThe output file name of the source redis data[required, default: redis.data])parser.add_option(-l, --log-file-name,actionstore,destlog_file_name,defaultapp.log,typestr,helpThe log file name[required, default: app.log])(options, args) parser.parse_args()if not (options.redis_source_url and options.redis_source_port):parser.error(redis-source-url, redis-source-port are required arguments. Please see help)data_path options.redis_data_output_file_nameif os.path.exists(data_path):os.remove(data_path)mylogger new_logger(to_fileTrue, levellogging.ERROR, log_file_nameoptions.log_file_name)with open(data_path, a) as fd:extract(options, fd, mylogger)导出数据 $ python export.py -s 127.0.0.1 -p 6379$ head redis.data *5\r\n$5\r\nLPUSH\r\n$11\r\nnormalQueue\r\n$3\r\nccc\r\n$2\r\nbb\r\n$3\r\naaa\r\n *8\r\n$4\r\nSADD\r\n$9\r\nnormalSet\r\n$2\r\ndd\r\n$2\r\nbb\r\n$2\r\ncc\r\n$2\r\nee\r\n$2\r\naa\r\n$2\r\nff\r\n *3\r\n$6\r\nEXPIRE\r\n$9\r\nnormalSet\r\n$4\r\n1728\r\n *6\r\n$5\r\nHMSET\r\n$10\r\nnormalHash\r\n$2\r\nk1\r\n$2\r\nv1\r\n$2\r\nk2\r\n$2\r\nv2\r\n *3\r\n$3\r\nSET\r\n$9\r\nnormalStr\r\n$3\r\nvvv\r\n导入脚本 load.sh #!/bin/shwhile read -r line donohup printf %b $line| redis-cli -p 6380 --pipe load-std.log 2 load-err.log done $1导入数据 sh load.sh redis.data参考 https://stackoverflow.com/questions/44288974/sync-with-master-failed-err-unknown-command-synchttps://gist.github.com/jimmyislive/0efd7a6a1c7f7afd73e8#file-clone_redis-py
http://www.w-s-a.com/news/543958/

相关文章:

  • 做网站怎么销售.net开发网站怎么样
  • 蚌埠网站优化网站换空间wordpress
  • 微网站开发框架公司企业logo
  • 大淘客官网做的网站打不开网站建设完成
  • 婚纱摄影网站模板让别人做网站怎样才安全
  • 技术支持 骏域网站建设专家佛山网站运营管理教材
  • 个体营业执照可以做网站服务吗电商运营学校培训
  • 企业网站免费推广的方法.wordpress 爱情模板下载地址
  • 轻淘客 轻网站怎么做手机开发人员选项怎么打开
  • 天津做网站制作公司html网站 下载
  • 哪个网站的课件做的好crm客户管理系统全称
  • 网站建设工作室创业计划书seo是什么职位的简称
  • o2o平台网站开发什么是白帽seo
  • 免费建个人手机网站WordPress 简历库
  • 建网站 是否 数据库阳瘘的最佳治疗方法是什么
  • 知晓程序网站怎么做网站基础维护
  • 兼职做网站赚钱吗图片设计制作哪个软件好手机
  • 做手机旅游网站智慧校园登录入口
  • 莆田网站建设维护国外极简网站
  • 百度怎样收录网站缪斯设计集团
  • 网站建设在开封找谁做wordpress 数据转换
  • 旅游网站开发的流程江苏付费网络推广培训
  • 网站软文标题2018wordpress主题
  • 德清网站设计wordpress免登录发布接
  • 可以做游戏的网站有哪些客户关系管理系统的主要功能
  • 整人关不掉的网站怎么做广东省网站免备案表
  • 网站设计素材edu域名网站
  • 中山学校的网站建设wordpress文章图片显示不出
  • 兰溪城市建设规划网站网站联盟的基本流程
  • 免费推广网站注册入口小说阅读网站怎么建设