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 相关文章推荐
一个简单的自动发送邮件系统(二)
Oct 09 PHP
mysql5详细安装教程
Jan 15 PHP
php实现的一个很好用HTML解析器类可用于采集数据
Sep 23 PHP
PHP正则表达式 /i, /is, /s, /isU等介绍
Oct 23 PHP
既简单又安全的PHP验证码 附调用方法
Jun 02 PHP
php rmdir使用递归函数删除非空目录实例详解
Oct 20 PHP
php session的应用详细介绍
Mar 22 PHP
浅谈PHP面向对象之访问者模式+组合模式
May 22 PHP
PHP实现求两个字符串最长公共子串的方法示例
Nov 17 PHP
php实现简单的守护进程创建、开启与关闭操作
Aug 13 PHP
laravel框架中表单请求类型和CSRF防护实例分析
Nov 23 PHP
PHP中多字节字符串操作实例详解
Aug 23 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
CI(CodeIgniter)框架中的增删改查操作
2014/06/10 PHP
PHP实现mysqli批量执行多条语句的方法示例
2017/07/22 PHP
PHP5.0~5.6 各版本兼容性cURL文件上传功能实例分析
2018/05/11 PHP
PHP实现redis限制单ip、单用户的访问次数功能示例
2018/06/16 PHP
jQuery 添加/移除CSS类实现代码
2010/02/11 Javascript
10个基于jQuery或JavaScript的WYSIWYG 编辑器整理
2010/05/06 Javascript
在浏览器中实现图片粘贴的jQuery插件-- pasteimg使用指南
2014/12/29 Javascript
微信小程序 解析网页内容详解及实例
2017/02/22 Javascript
vue.js利用defineProperty实现数据的双向绑定
2017/04/28 Javascript
基于ES6 Array.of的用法(实例讲解)
2017/09/05 Javascript
vue proxyTable 接口跨域请求调试的示例
2017/09/12 Javascript
基于vue v-for 循环复选框-默认勾选第一个的实现方法
2018/03/03 Javascript
vue-quill-editor+plupload富文本编辑器实例详解
2018/10/19 Javascript
详解无限滚动插件vue-infinite-scroll源码解析
2019/05/12 Javascript
微信小程序完美解决scroll-view高度自适应问题的方法
2020/08/08 Javascript
[00:57]林俊杰助阵DOTA2亚洲邀请赛
2015/01/28 DOTA
python爬虫获取多页天涯帖子
2018/02/23 Python
Python装饰器的执行过程实例分析
2018/06/04 Python
Python读取数据集并消除数据中的空行方法
2018/07/12 Python
python 实现查找文件并输出满足某一条件的数据项方法
2019/06/12 Python
django mysql数据库及图片上传接口详解
2019/07/18 Python
django项目中使用手机号登录的实例代码
2019/08/15 Python
超实用的 30 段 Python 案例
2019/10/10 Python
在python3中使用shuffle函数要注意的地方
2020/02/28 Python
Python判断变量是否是None写法代码实例
2020/10/09 Python
Mixbook加拿大:照片书,照片卡,剪贴簿,年历和日历
2017/02/21 全球购物
西班牙Polo衫品牌:Polo Club
2020/08/09 全球购物
如何开发一个JQuery插件
2016/07/28 面试题
电子工程专业毕业生求职信
2014/03/14 职场文书
社区禁毒工作方案
2014/06/02 职场文书
2014年公务员转正工作总结
2014/11/07 职场文书
机修车间主任岗位职责
2015/04/08 职场文书
国庆节主题班会
2015/08/15 职场文书
Python读取文件夹下的所有文件实例代码
2021/04/02 Python
AJAX实现指定部分页面刷新效果
2021/10/16 Javascript
pandas时间序列之pd.to_datetime()的实现
2022/06/16 Python