php实现redis数据库指定库号迁移的方法


Posted in PHP onJanuary 14, 2015

本文实例讲述了php实现redis数据库指定库号迁移的方法,分享给大家供大家参考。具体如下:

redis普通的数据库迁移,只能整个redis save,或者利用主从,当然也可以安装一个redis-dump,不过比较麻烦,这里提供一种php的脚本,实现指定库号的迁移,其实也就是遍历根据存储类型,读出来,插入新库,效果是这样:

[root@localhost ~]# php 1.php 

1/407 

101/407 

201/407 

301/407 

401/407

PHP实例代码如下:
<?php 

$from = '10.0.2.52:6379/7'; 

$to   = '127.0.0.1:6379/7'; 

$from_redis = redis_init($from); 

$to_redis   = redis_init($to); 

$keys  = $from_redis->keys('*'); 

$count = 0; 

$total = count($keys); 

foreach($keys as $key){ 

    if(++$count % 100 == 1){ 

        echo "$count/$total\n"; 

    } 

    $type = $from_redis->type($key); 

    switch($type){ 

        case Redis::REDIS_STRING: 

            $val = $from_redis->get($key); 

            $to_redis->set($key, $val); 

            break; 

        case Redis::REDIS_LIST: 

            $list = $from_redis->lRange($key, 0, -1); 

            foreach($list as $val){ 

                $to_redis->rPush($key, $val); 

            } 

            break; 

        case Redis::REDIS_HASH: 

            $hash = $from_redis->hGetAll($key); 

            $to_redis->hMSet($key, $hash); 

            break; 

        case Redis::REDIS_ZSET: 

            $zset = $from_redis->zRange($key, 0, -1, true); 

            foreach($zset as $val=>$score){ 

                $to_redis->zAdd($key, $score, $val); 

            } 

            break; 

    } 

} 

function redis_init($conf){ 

    $redis = new Redis(); 

    preg_match('/^([^:]+)(:[0-9]+)?\\/(.+)?/', $conf, $ms); 

    $host = $ms[1]; 

    $port = trim($ms[2], ':'); 

    $db = $ms[3]; 

    $redis->connect($host, $port); 

    $redis->select($db); 

    return $redis; 

} 

?>

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
PHP+AJAX实现无刷新注册(带用户名实时检测)
Dec 02 PHP
用PHP生成静态HTML速度快类库
Mar 18 PHP
ZF等常用php框架中存在的问题
Jan 10 PHP
flash用php连接数据库的代码
Apr 21 PHP
PHP OPP机制和模式简介(抽象类、接口和契约式编程)
Jun 09 PHP
php天翼开放平台短信发送接口实现方法
Dec 22 PHP
php实现转换ubb代码的方法
Jun 18 PHP
Smarty保留变量用法分析
May 23 PHP
图文详解phpstorm配置Xdebug进行调试PHP教程
Jun 13 PHP
PHP入门教程之面向对象的特性分析(继承,多态,接口,抽象类,抽象方法等)
Sep 11 PHP
PHP数组去重的更快实现方式分析
May 09 PHP
PHP设计模式之简单工厂和工厂模式实例分析
Mar 25 PHP
php导入excel文件到mysql数据库的方法
Jan 14 #PHP
php+mysql查询优化简单实例
Jan 13 #PHP
php5.4以下版本json不支持不转义内容中文的解决方法
Jan 13 #PHP
php正则匹配html中带class的div并选取其中内容的方法
Jan 13 #PHP
PHP针对JSON操作实例分析
Jan 12 #PHP
php页面缓存方法小结
Jan 10 #PHP
php中异常处理方法小结
Jan 09 #PHP
You might like
PHP的栏目导航程序
2006/10/09 PHP
8个出色的WordPress SEO插件收集
2011/02/26 PHP
div li的多行多列 无刷新分页示例代码
2013/10/16 PHP
php简单实现多语言切换的方法
2016/05/09 PHP
微信支付PHP SDK ―― 公众号支付代码详解
2016/09/13 PHP
jquery中选择块并改变属性值的方法
2013/07/31 Javascript
js实现星星打分效果的方法
2020/07/05 Javascript
JavaScript中的this到底是什么(一)
2015/12/09 Javascript
bootstrap table小案例
2016/10/21 Javascript
Ajax的概述与实现过程
2016/11/18 Javascript
react.js 翻页插件实例代码
2017/01/19 Javascript
web3.js增加eth.getRawTransactionByHash(txhash)方法步骤
2018/03/15 Javascript
vue实现点击展开点击收起效果
2018/04/27 Javascript
Vue自定义弹窗指令的实现代码
2018/08/13 Javascript
JavaScript使用Math.random()生成简单的验证码
2019/01/21 Javascript
Layui带搜索的下拉框的使用以及动态数据绑定方法
2019/09/28 Javascript
webpack4 optimization使用总结
2019/11/10 Javascript
JavaScript中ES6规范中let和const的用法和区别
2020/08/06 Javascript
简介Python中用于处理字符串的center()方法
2015/05/18 Python
Windows下Eclipse+PyDev配置Python+PyQt4开发环境
2016/05/17 Python
python re模块的高级用法详解
2018/06/06 Python
Python 加密与解密小结
2018/12/06 Python
解决Python selenium get页面很慢时的问题
2019/01/30 Python
python做反被爬保护的方法
2019/07/01 Python
python爬虫 正则表达式解析
2019/09/28 Python
Python celery原理及运行流程解析
2020/06/13 Python
美国网上眼镜供应商:LEOTONY(眼镜、RX太阳镜和太阳镜)
2017/10/31 全球购物
自荐信的两点禁忌
2013/10/30 职场文书
建筑行业的大学生自我评价
2013/12/08 职场文书
大学军训感言1500字
2014/03/09 职场文书
李培根演讲稿
2014/05/22 职场文书
义诊活动总结
2015/02/04 职场文书
2015年毕业生个人自荐书
2015/03/24 职场文书
硕士论文致谢范文
2015/05/14 职场文书
机关工会工作总结2015
2015/05/26 职场文书
2019各种保证书范文
2019/06/24 职场文书