好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

php实现redis数据库指定库号迁移 - php高级应用

php实现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 ){  //开源代码phpfensi测试数据        $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实现redis数据库指定库号迁移 - php高级应用的详细内容...

  阅读:44次