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 相关文章推荐
实用函数8
Nov 08 PHP
php面向对象全攻略 (六)__set() __get() __isset() __unset()的用法
Sep 30 PHP
php 格式化数字的时候注意数字的范围
Apr 13 PHP
ThinkPHP后台首页index使用frameset时的注意事项分析
Aug 22 PHP
php计算税后工资的方法
Jul 28 PHP
php数组比较实现查找连续数的方法
Jul 29 PHP
Yii快速入门经典教程
Dec 28 PHP
Thinkphp3.2.3分页使用实例解析
Jul 28 PHP
PHP编程实现csv文件导入mysql数据库的方法
Apr 29 PHP
PHP中include和require的区别实例分析
May 07 PHP
JS+PHP实现用户输入数字后显示最大的值及所在位置
Jun 19 PHP
PHP数组访问常用方法解析
Sep 05 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开发中的错误收集,不定期更新。
2011/02/03 PHP
PHP分多步骤填写发布信息的简单方法实例代码
2012/09/23 PHP
php继承中方法重载(覆盖)的应用场合
2015/02/09 PHP
javascript学习随笔(使用window和frame)的技巧
2007/03/08 Javascript
JS window对象的top、parent、opener含义介绍
2013/12/03 Javascript
调用HttpHanlder的几种返回方式小结
2013/12/20 Javascript
javascript 模拟坦克大战游戏(html5版)附源码下载
2014/04/08 Javascript
使用jquery修改表单的提交地址基本思路
2014/06/04 Javascript
jquery+php实现搜索框自动提示
2014/11/28 Javascript
JavaScript学习笔记之JS对象
2015/01/22 Javascript
JS+CSS实现滑动切换tab菜单效果
2015/08/25 Javascript
基于vue组件实现猜数字游戏
2020/05/28 Javascript
解决vue数组中对象属性变化页面不渲染问题
2018/08/09 Javascript
vue+element+Java实现批量删除功能
2019/04/08 Javascript
JS实现横向轮播图(初级版)
2020/06/24 Javascript
linux系统使用python获取内存使用信息脚本分享
2014/01/15 Python
python回溯法实现数组全排列输出实例分析
2015/03/17 Python
python实现识别相似图片小结
2016/02/22 Python
Python实现Mysql数据库连接池实例详解
2017/04/11 Python
python使用matplotlib画柱状图、散点图
2019/03/18 Python
python2爬取百度贴吧指定关键字和图片代码实例
2019/08/14 Python
Python 自动登录淘宝并保存登录信息的方法
2019/09/04 Python
python自动化测试之异常及日志操作实例分析
2019/11/09 Python
tensorflow -gpu安装方法(不用自己装cuda,cdnn)
2020/01/20 Python
Keras-多输入多输出实例(多任务)
2020/06/22 Python
Jmeter HTTPS接口测试证书导入过程图解
2020/07/22 Python
菲律宾最大的网上花店和礼品店:PhilFlower.com
2018/02/09 全球购物
速比涛英国官网:Speedo英国
2019/07/15 全球购物
英国购买威士忌网站:Master of Malt
2019/09/26 全球购物
新员工试用期自我鉴定
2014/04/17 职场文书
竞选部长演讲稿
2014/04/26 职场文书
医院反腐倡廉演讲稿
2014/09/16 职场文书
物价局领导班子四风问题整改措施
2014/10/26 职场文书
幼儿园五一劳动节活动总结
2015/02/09 职场文书
CSS极坐标的实例代码
2021/06/03 HTML / CSS
python 使用pandas读取csv文件的方法
2022/12/24 Python