php实现redis数据库指定库号迁移
下面来一个朋友写的php实现redis数据库指定库号迁移,希望例子能给各位带来帮助.
redis普通的数据库迁移,只能整个redis save,或者利用主从,当然也可以安装一个redis-dump,不过比较麻烦,这里提供一种php的脚本,实现指定库号的迁移,其实也就是遍历根据存储类型,读出来,插入新库,效果是这样:
[root@localhost ~]# php 1.php 1/407 101/407 201/407 301/407 401/407PHP实例代码如下:
<?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高级应用的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did30543