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脚本的10个技巧(4)
Oct 09 PHP
PHPLog php 程序调试追踪工具
Sep 09 PHP
memcached 和 mysql 主从环境下php开发代码详解
May 16 PHP
PHP Zip压缩 在线对文件进行压缩的函数
May 26 PHP
php数据入库前清理 注意php intval与mysql的int取值范围不同
Dec 12 PHP
单点登录 Ucenter示例分析
Oct 29 PHP
注意!PHP 7中不要做的10件事
Sep 18 PHP
微信公众号模板消息群发php代码示例
Dec 29 PHP
PHP中include()与require()的区别说明
Feb 14 PHP
PHP实现超简单的SSL加密解密、验证及签名的方法示例
Aug 28 PHP
利用Laravel生成Gravatar头像地址的优雅方法
Dec 30 PHP
PHP PDOStatement::closeCursor讲解
Jan 30 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漏洞全解(详细介绍)
2012/11/13 PHP
PHP中抽象类、接口的区别与选择分析
2016/03/29 PHP
Laravel接收前端ajax传来的数据的实例代码
2017/07/20 PHP
PHP并发场景的三种解决方案代码实例
2021/02/27 PHP
基于jquery的多彩百分比 动态进度条 投票效果显示效果实现代码
2011/08/28 Javascript
JS无法捕获滚动条上的mouse up事件的原因猜想
2012/03/21 Javascript
JavaScript原生对象之Date对象的属性和方法详解
2015/03/13 Javascript
jquery+html5烂漫爱心表白动画代码分享
2015/08/24 Javascript
使用vue.js编写蓝色拼图小游戏
2017/03/17 Javascript
聊聊JavaScript如何实现继承及特点
2017/04/07 Javascript
Nodejs中使用captchapng模块生成图片验证码
2017/05/18 NodeJs
AngularJS修改model值时,显示内容不变的实例
2018/09/13 Javascript
Vue2.0学习系列之项目上线的方法步骤(图文)
2018/09/25 Javascript
vue实现鼠标经过动画
2019/10/16 Javascript
vue项目实现多语言切换的思路
2020/09/17 Javascript
jQuery实现回到顶部效果
2020/10/19 jQuery
Nuxt 嵌套路由nuxt-child组件用法(父子页面组件的传值)
2020/11/05 Javascript
[13:21]DOTA2国际邀请赛采访专栏:RSnake战队国士无双,Fnatic.Fly
2013/08/06 DOTA
[09:33]2015国际邀请赛第四日TOP10
2015/08/08 DOTA
python使用socket远程连接错误处理方法
2015/04/29 Python
Python MD5加密实例详解
2017/08/02 Python
答题辅助python代码实现
2018/01/16 Python
python3利用Dlib19.7实现人脸68个特征点标定
2018/02/26 Python
Python对Excel按列值筛选并拆分表格到多个文件的代码
2019/11/05 Python
通过python-pptx模块操作ppt文件的方法
2020/12/26 Python
css3弹性盒模型(Flexbox)详细介绍
2014/10/08 HTML / CSS
html5 乒乓球(碰撞检测)实例二
2013/07/25 HTML / CSS
澳大利亚在线时尚精品店:Hello Molly
2018/02/26 全球购物
简单介绍Object类的功能、常用方法
2013/10/02 面试题
了解AppleShare protocol(AppleShare协议)吗
2015/08/28 面试题
会议开场欢迎词
2014/01/15 职场文书
校庆活动方案
2014/03/31 职场文书
初中生旷课检讨书范文
2014/10/06 职场文书
学生会个人总结范文
2015/02/15 职场文书
淮海战役观后感
2015/06/11 职场文书
同事离别感言
2015/08/04 职场文书