> 데이터 베이스 > MySQL 튜토리얼 > 迁移部分redis数据到其他redis实例

迁移部分redis数据到其他redis实例

WBOY
풀어 주다: 2016-06-07 16:34:55
원래의
1413명이 탐색했습니다.

前一阵子发现我们一个业务服务器的redis内存使用超过了服务器总内存的50%,当触发bgsave的时候,会报错,提示 WARNING overcommit_memory is set to 0! ... ,然后所有redis的写操作都会失败,这个问题redis官方FAQ中有解决方案,linux下,进行如下操作, ec

前一阵子发现我们一个业务服务器的redis内存使用超过了服务器总内存的50%,当触发bgsave的时候,会报错,提示WARNING overcommit_memory is set to 0! ...,然后所有redis的写操作都会失败,这个问题redis官方FAQ中有解决方案,linux下,进行如下操作,

<code>echo 1 > /proc/sys/vm/overcommit_memory
</code>
로그인 후 복사

具体可以看官方FAQ,http://redis.io/topics/faq

解决了bgsave的问题之后,我们决定迁移一部分数据出去,分离一些数据到其他的redis实例中,下边记录下迁移过程。两种方案,一种是拷贝rdb文件或者配置一个从redis同步,但是这样所有数据都迁移了,还得做其他处理,所以放弃这个方案。另外一个方案就是写一个迁移脚本,只迁移部分想要迁移的数据。

这里直接贴出来

#!/bin/bash

#redis 源ip
src_ip=192.168.0.10
#redis 源port
src_port=6379

#redis 目的ip
dest_ip=192.168.0.11
#redis 目的port
dest_port=6379

#要迁移的key前缀
key_prefix=com.example.test

i=1

redis-cli -h $src_ip -p $src_port keys "${key_prefix}*" | while read key
do
    redis-cli -h $dest_ip -p $dest_port del $key
    redis-cli -h $src_ip -p $src_port --raw dump $key | perl -pe 'chomp if eof' | redis-cli -h $dest_ip -p $dest_port -x restore $key 0
    echo "$i migrate key $key"
    ((i++))
done
로그인 후 복사

参考资料:

1、http://redis.io/commands/DUMP

2、http://stackoverflow.com/questions/16127682/how-to-use-redis-dump-and-restore-offline

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿