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中判断一个字符串包含另一个字符串的方法
Mar 19 PHP
PHP提取字符串中的图片地址[正则表达式]
Nov 12 PHP
php4与php5的区别小结(配置异同)
Dec 20 PHP
str_replace只替换一次字符串的方法
Apr 09 PHP
浅析PHP的ASCII码转换类
Jul 05 PHP
ThinkPHP3.1数据CURD操作快速入门
Jun 19 PHP
php微信公众开发之获取周边酒店信息的方法
Dec 22 PHP
Yii中Model(模型)的创建及使用方法
Dec 28 PHP
php实现带读写分离功能的MySQL类完整实例
Jul 28 PHP
CI框架实现优化文件上传及多文件上传的方法
Jan 04 PHP
PHP实现从PostgreSQL数据库检索数据分页显示及根据条件查找数据示例
Jun 09 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
支持数组的ADDSLASHES的php函数
2010/02/16 PHP
php 文本文件的读取效率
2012/02/10 PHP
JQuery开发的数独游戏代码
2010/10/29 Javascript
jQuery控制图片的hover效果(smartRollover.js)
2012/03/18 Javascript
简单实现限制uploadify上传个数
2015/11/16 Javascript
JavaScript中利用jQuery绑定事件的几种方式小结
2016/03/06 Javascript
Javascript之面向对象--封装
2016/12/02 Javascript
微信小程序小组件 基于Canvas实现直播点赞气泡效果
2020/05/29 Javascript
详解react如何在组件中获取路由参数
2017/06/15 Javascript
微信小程序tabBar底部导航中文注解api详解
2017/08/16 Javascript
微信通过页面(H5)直接打开本地app的解决方法
2017/09/09 Javascript
Bootstrap实现下拉菜单多级联动
2017/11/23 Javascript
vue引入新版 vue-awesome-swiper插件填坑问题
2018/01/25 Javascript
vue2.0 子组件改变props值,并向父组件传值的方法
2018/03/01 Javascript
Vue ElementUi同时校验多个表单(巧用new promise)
2018/06/06 Javascript
JavaScript简单实现动态改变HTML内容的方法示例
2018/12/25 Javascript
three.js实现炫酷的全景3D重力感应
2018/12/30 Javascript
详解关闭令人抓狂的ESlint 语法检测配置方法
2019/10/28 Javascript
详解利用eventemitter2实现Vue组件通信
2019/11/04 Javascript
Vue 组件复用多次自定义参数操作
2020/07/27 Javascript
[52:36]VGJ.S vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
简单介绍Python中的decode()方法的使用
2015/05/18 Python
Python 两个列表的差集、并集和交集实现代码
2016/09/21 Python
PyChar学习教程之自定义文件与代码模板详解
2017/07/17 Python
Python基于OpenCV实现视频的人脸检测
2018/01/23 Python
Python使用folium excel绘制point
2019/01/03 Python
Python GUI编程学习笔记之tkinter中messagebox、filedialog控件用法详解
2020/03/30 Python
python 如何区分return和yield
2020/09/22 Python
python中time包实例详解
2021/02/02 Python
css3 background属性调整增强介绍
2010/12/18 HTML / CSS
CSS3 @media的基本用法总结
2019/09/10 HTML / CSS
欧洲高端品牌直销店:Fashionesta
2016/08/31 全球购物
中秋节礼品促销方案
2014/02/02 职场文书
市级绿色学校申报材料
2014/08/25 职场文书
mysql定时自动备份数据库的方法步骤
2021/07/07 MySQL
一文搞清楚MySQL count(*)、count(1)、count(col)区别
2022/03/03 MySQL