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 相关文章推荐
一个更简单的无限级分类菜单代码
Jan 16 PHP
PHP中实现汉字转区位码应用源码实例解析
Jun 14 PHP
PHP 自定义错误处理函数的使用详解
May 10 PHP
PHP curl CURLOPT_RETURNTRANSFER参数的作用使用实例
Feb 07 PHP
PHP解析RSS的方法
Mar 05 PHP
浅谈PHP中foreach/in_array的使用
Nov 02 PHP
PHP使用curl函数发送Post请求的注意事项
Nov 26 PHP
php 5.4 全新的代码复用Trait详解
Jan 05 PHP
PHP基于关联数组20行代码搞定约瑟夫问题示例
Nov 07 PHP
php抽象类和接口知识点整理总结
Aug 02 PHP
使用laravel和ECharts实现折线图效果的例子
Oct 09 PHP
PHP 扩展Memcached命令用法实例总结
Jun 04 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/24 PHP
处理单名多值表单的详解
2013/06/08 PHP
一个经典的PHP文件上传类分享
2014/11/18 PHP
不一样的文字闪烁 轮番闪烁
2009/11/11 Javascript
JQuery 确定css方框模型(盒模型Box Model)
2010/01/22 Javascript
javascript奇异的arguments分析
2010/10/20 Javascript
jQuery中delegate和on的用法与区别详细解析
2014/01/26 Javascript
javascript判断chrome浏览器的方法
2014/03/26 Javascript
javascript原始值和对象引用实例分析
2015/04/25 Javascript
JS简单模拟触发按钮点击功能的方法
2015/11/30 Javascript
深入剖析JavaScript中的函数currying柯里化
2016/04/29 Javascript
jQuery简单自定义图片轮播插件及用法示例
2016/11/21 Javascript
原生js实现密码输入框值的显示隐藏
2017/07/17 Javascript
JS实现十字坐标跟随鼠标效果
2017/12/25 Javascript
详解Vue基于vue-quill-editor富文本编辑器使用心得
2019/01/03 Javascript
vue+django实现一对一聊天功能的实例代码
2019/07/17 Javascript
微信小程序实现身份证取景框拍摄
2020/09/09 Javascript
vue使用echarts图表自适应的几种解决方案
2020/12/04 Vue.js
python 时间戳与格式化时间的转化实现代码
2016/03/23 Python
Python常用知识点汇总
2016/05/08 Python
Python中在for循环中嵌套使用if和else语句的技巧
2016/06/20 Python
Python中工作日类库Busines Holiday的介绍与使用
2017/07/06 Python
python爬取百度贴吧前1000页内容(requests库面向对象思想实现)
2019/08/10 Python
python游戏开发的五个案例分享
2020/03/09 Python
解决Python 异常TypeError: cannot concatenate 'str' and 'int' objects
2020/04/08 Python
Python Excel vlookup函数实现过程解析
2020/06/22 Python
html5配合css3实现带提示文字的输入框(摆脱js)
2013/03/08 HTML / CSS
Kidsroom台湾:来自德国的婴儿用品
2017/12/11 全球购物
英国街头品牌:Bee Inspired Clothing
2018/02/12 全球购物
资产评估专业学生的自我鉴定
2013/11/14 职场文书
小学班主任寄语大全
2014/04/04 职场文书
公司授权委托书
2014/04/04 职场文书
2014年检验科工作总结
2014/11/22 职场文书
幼师中班个人总结
2015/02/12 职场文书
Mysql binlog日志文件过大的解决
2021/10/05 MySQL
使用jpa之动态插入与修改(重写save)
2021/11/23 Java/Android