php实现redis数据库指定库号迁移的方法
来源: 阅读:681 次 日期:2015-03-24 16:41:13
温馨提示: 小编为您整理了“php实现redis数据库指定库号迁移的方法”,方便广大网友查阅!

这篇文章主要介绍了php实现redis数据库指定库号迁移的方法,涉及对于redis数据库的操作技巧,非常具有实用价值,需要的朋友可以参考下

本文实例讲述了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程序设计有所帮助。

更多信息请查看IT技术专栏

更多信息请查看网络编程
由于各方面情况的不断调整与变化, 提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!

2025国考·省考课程试听报名

  • 报班类型
  • 姓名
  • 手机号
  • 验证码
关于我们 | 联系我们 | 人才招聘 | 网站声明 | 网站帮助 | 非正式的简要咨询 | 简要咨询须知 | 加入群交流 | 手机站点 | 投诉建议
工业和信息化部备案号:滇ICP备2023014141号-1 云南省教育厅备案号:云教ICP备0901021 滇公网安备53010202001879号 人力资源服务许可证:(云)人服证字(2023)第0102001523号
云南网警备案专用图标
联系电话:0871-65317125(9:00—18:00) 获取招聘考试信息及咨询关注公众号:
咨询QQ:526150442(9:00—18:00)版权所有:
云南网警报警专用图标
Baidu
map