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 相关文章推荐
提示Trying to clone an uncloneable object of class Imagic的解决
Oct 27 PHP
通过PHP修改Linux或Unix口令的方法分享
Jan 30 PHP
apache mysql php 源码编译使用方法
May 03 PHP
PHP中数组的三种排序方法分享
May 07 PHP
ThinkPHP框架任意代码执行漏洞的利用及其修复方法
Jul 04 PHP
QQ互联一键登录审核不通过的解决方案
Sep 10 PHP
WordPress中用于获取及自定义头像图片的PHP脚本详解
Dec 17 PHP
WordPress过滤垃圾评论的几种主要方法小结
Jul 11 PHP
yii2.0实现创建简单widgets示例
Jul 18 PHP
PHP mysqli事务操作常用方法分析
Jul 22 PHP
php如何把表单内容提交到数据库
Jul 08 PHP
php计数排序算法的实现代码(附四个实例代码)
Mar 31 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入门学习知识点二 PHP简单的分页过程与原理
2011/07/14 PHP
PHP中获取文件扩展名的N种方法小结
2012/02/27 PHP
一个漂亮的php验证码类(分享)
2013/08/06 PHP
PHP判断指定时间段的2个方法
2014/03/14 PHP
PHP使用DOMDocument类生成HTML实例(包含常见标签元素)
2014/06/25 PHP
ThinkPHP调用百度翻译类实现在线翻译
2014/06/26 PHP
php生成随机数的三种方法
2014/09/10 PHP
深入理解PHP的远程多会话调试
2017/09/21 PHP
JQuery扩展插件Validate 2通过参数设置验证规则
2011/09/05 Javascript
JQuery魔力之$(&quot;tagName&quot;)与selector
2012/03/05 Javascript
JavaScript单元测试ABC
2012/04/12 Javascript
几种设置表单元素中文本输入框不可编辑的方法总结
2013/11/25 Javascript
jQuery性能优化技巧分析
2015/02/20 Javascript
jQuery实现有动画淡出效果的二级折叠菜单代码
2015/10/17 Javascript
animate 实现滑动切换效果【实例代码】
2016/05/05 Javascript
Vue.js在使用中的一些注意知识点
2017/04/29 Javascript
基于Jquery Ajax type的4种类型(详解)
2017/08/02 jQuery
Vue-Cli中自定义过滤器的实现代码
2017/08/12 Javascript
js登录滑动验证的实现(不滑动无法登陆)
2018/01/03 Javascript
Vue-cli项目获取本地json文件数据的实例
2018/03/07 Javascript
关于jquery layui弹出层的使用方法
2018/04/21 jQuery
基于Vue 服务端Cookies删除的问题
2018/09/21 Javascript
vue获取时间戳转换为日期格式代码实例
2019/04/17 Javascript
TypeScript中使用getElementXXX()的示例代码
2019/09/12 Javascript
[02:56]DOTA2英雄基础教程 巨魔战将
2013/12/10 DOTA
Python中的字典与成员运算符初步探究
2015/10/13 Python
Python格式化字符串f-string概览(小结)
2019/06/18 Python
python-Web-flask-视图内容和模板知识点西宁街
2019/08/23 Python
美国知名运动产品零售商:Foot Locker
2016/07/23 全球购物
文职个人求职信范文
2013/09/23 职场文书
对外汉语专业大学生职业生涯规划书
2014/10/11 职场文书
升职自我推荐信范文
2015/03/25 职场文书
2015年为民办实事工作总结
2015/05/26 职场文书
Vue中foreach数组与js中遍历数组的写法说明
2021/06/05 Vue.js
低门槛开发iOS、Android、小程序应用的前端框架详解
2021/10/16 Javascript
《游戏王:大师决斗》新活动上线 若无符合卡组可免费租用
2022/04/13 其他游戏