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版)
Oct 09 PHP
在PHP中执行系统外部命令
Oct 09 PHP
用PHP控制用户的浏览器--ob*函数的使用说明
Mar 16 PHP
php中将图片gif,jpg或mysql longblob或blob字段值转换成16进制字符串
Aug 23 PHP
php用header函数实现301跳转代码实例
Nov 25 PHP
PHP基于php_imagick_st-Q8.dll实现JPG合成GIF图片的方法
Jul 11 PHP
PHP中单引号与双引号的区别分析
Aug 19 PHP
PHP常量使用的几个需要注意的地方(谨慎使用PHP中的常量)
Sep 12 PHP
php获取系统变量方法小结
May 29 PHP
php mailer类调用远程SMTP服务器发送邮件实现方法
Mar 04 PHP
Symfony2创建页面实例详解
Mar 18 PHP
php出租房数据管理及搜索页面
May 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
sql注入与转义的php函数代码
2013/06/17 PHP
PHP根据两点间的经纬度计算距离
2014/10/31 PHP
PHP经典实用正则表达式小结
2017/05/04 PHP
php实现的rc4加密解密类定义与用法示例
2018/08/16 PHP
PHP程序守护进程化实现方法详解
2020/07/16 PHP
javascript的对话框详解与参数
2007/03/08 Javascript
JQuery 插件模板 制作jquery插件的朋友可以参考下
2010/03/17 Javascript
THREE.JS入门教程(3)着色器-下
2013/01/24 Javascript
JS实现图片横向滚动效果示例代码
2013/09/04 Javascript
angular简介和其特点介绍
2015/01/29 Javascript
JavaScript获得当前网页来源页面(即上一页)的方法
2015/04/03 Javascript
js获取微信版本号的方法
2015/05/12 Javascript
JS模拟酷狗音乐播放器收缩折叠关闭效果代码
2015/10/29 Javascript
JS控制TreeView的结点选择
2016/11/11 Javascript
JS中闭包的经典用法小结(2则示例)
2016/12/28 Javascript
jQuery中页面返回顶部的方法总结
2016/12/30 Javascript
Mongoose学习全面理解(推荐)
2017/01/21 Javascript
详解数组Array.sort()排序的方法
2020/05/09 Javascript
element-ui上传一张图片后隐藏上传按钮功能
2019/05/22 Javascript
ES6顶层对象、global对象实例分析
2019/06/14 Javascript
bootstrap+spring boot实现面包屑导航功能(前端代码)
2019/10/09 Javascript
[01:00]DOTA2 store: Collection of Artisan's Wonders
2015/08/12 DOTA
Python3读取UTF-8文件及统计文件行数的方法
2015/05/22 Python
安装ElasticSearch搜索工具并配置Python驱动的方法
2015/12/22 Python
浅谈pandas中Dataframe的查询方法([], loc, iloc, at, iat, ix)
2018/04/10 Python
使用python将大量数据导出到Excel中的小技巧分享
2018/06/14 Python
全面了解django的缓存机制及使用方法
2019/07/22 Python
更新pip3与pyttsx3文字语音转换的实现方法
2019/08/08 Python
python操作cfg配置文件方式
2019/12/22 Python
Python unittest单元测试框架实现参数化
2020/04/29 Python
详解Html5原生拖拽操作
2018/01/12 HTML / CSS
JBL澳大利亚官方商店:扬声器、耳机和音响系统
2018/05/24 全球购物
采购主管的岗位职责
2013/12/17 职场文书
毕业赠语大全
2015/06/23 职场文书
小学二年级班主任工作经验交流材料
2015/11/02 职场文书
python第三方网页解析器 lxml 扩展库与 xpath 的使用方法
2021/04/06 Python