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中通过ADO调用Asscess数据库和COM程序
Oct 09 PHP
PHP中鲜为人知的10个函数
Feb 28 PHP
php类声明和php类使用方法示例分享
Mar 29 PHP
PHP实现自动登入google play下载app report的方法
Sep 23 PHP
thinkphp数据查询和遍历数组实例
Nov 28 PHP
使用PHP uniqid函数生成唯一ID
Nov 18 PHP
PHP类的声明与实例化及构造方法与析构方法详解
Jan 26 PHP
完美解决phpdoc导出文档中@package的warning及Error的错误
May 17 PHP
根据key删除数组中指定的元素实现方法
Mar 02 PHP
ThinkPHP框架整合微信支付之刷卡模式图文详解
Apr 10 PHP
Smarty缓存机制实例详解【三种缓存方式】
Jul 20 PHP
PHP vsprintf()函数格式化字符串操作原理解析
Jul 14 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
真正面向对象编程:PHP5.01发布
2006/10/09 PHP
yii2.0数据库迁移教程【多个数据库同时同步数据】
2016/10/08 PHP
JavaScript面向对象程序设计三 原型模式(上)
2011/12/21 Javascript
浅谈关于JavaScript的语言特性分析
2013/04/11 Javascript
Javascript中克隆一个数组的实现代码
2013/12/06 Javascript
escape函数解决js中ajax传递中文出现乱码问题
2014/10/30 Javascript
javascript 中__proto__和prototype详解
2014/11/25 Javascript
node.js中的fs.truncateSync方法使用说明
2014/12/15 Javascript
jQuery中用dom操作替代正则表达式
2014/12/29 Javascript
Javascript无参数和有参数类继承问题解决方法
2015/03/02 Javascript
JS使用ajax方法获取指定url的head信息中指定字段值的方法
2015/03/24 Javascript
jQuery插件制作之全局函数用法实例
2015/06/01 Javascript
JavaScript常用正则函数用法示例
2017/01/23 Javascript
简单实现js选项卡切换效果
2017/02/09 Javascript
使用bat打开多个cmd窗口执行gulp、node
2017/02/17 Javascript
jQuery实现对网页节点的增删改查功能示例
2017/09/18 jQuery
Angular5中调用第三方js插件的方法
2018/02/26 Javascript
微信小程序使用websocket通讯的demo,含前后端代码,亲测可用
2019/05/22 Javascript
vue实现分页栏效果
2019/06/28 Javascript
基于layui内置模块(element常用元素的操作)
2019/09/20 Javascript
vue + elementUI实现省市县三级联动的方法示例
2019/10/29 Javascript
JS前端基于canvas给图片添加水印
2020/11/11 Javascript
python3使用urllib示例取googletranslate(谷歌翻译)
2014/01/23 Python
图文讲解选择排序算法的原理及在Python中的实现
2016/05/04 Python
详解python的webrtc库实现语音端点检测
2017/05/31 Python
Python with标签使用方法解析
2020/01/17 Python
伦敦剧院及景点门票:Encore Tickets
2018/07/01 全球购物
Shop Apotheke瑞士:您的健康与美容网上商店
2019/10/09 全球购物
机械专业应届生求职信
2013/09/21 职场文书
教师自我鉴定范文
2014/03/20 职场文书
学雷锋先进个人事迹
2014/05/26 职场文书
公司踏青活动方案
2014/08/16 职场文书
2014年英语工作总结
2014/12/20 职场文书
幸福终点站观后感
2015/06/04 职场文书
详解CocosCreator消息分发机制
2021/04/16 Javascript
MySQL 发生同步延迟时Seconds_Behind_Master还为0的原因
2021/06/21 MySQL