php实现redis数据库指定库号迁移的方法
本文实例讲述了php实现redis数据库指定库号迁移的方法,分享给大家供大家参考。具体如下:
redis普通的数据库迁移,只能整个redissave,或者利用主从,当然也可以安装一个redis-dump,不过比较麻烦,这里提供一种php的脚本,实现指定库号的迁移,其实也就是遍历根据存储类型,读出来,插入新库,效果是这样:
[root@localhost~]#php1.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($keysas$key){ if(++$count%100==1){ echo"$count/$total\n"; } $type=$from_redis->type($key); switch($type){ caseRedis::REDIS_STRING: $val=$from_redis->get($key); $to_redis->set($key,$val); break; caseRedis::REDIS_LIST: $list=$from_redis->lRange($key,0,-1); foreach($listas$val){ $to_redis->rPush($key,$val); } break; caseRedis::REDIS_HASH: $hash=$from_redis->hGetAll($key); $to_redis->hMSet($key,$hash); break; caseRedis::REDIS_ZSET: $zset=$from_redis->zRange($key,0,-1,true); foreach($zsetas$val=>$score){ $to_redis->zAdd($key,$score,$val); } break; } } functionredis_init($conf){ $redis=newRedis(); 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程序设计有所帮助。