Redis Ordinary database migration, only the entire Redis save, or the use of master, of course, can also install a redis-dump, but more trouble, here provides a PHP script, to achieve the transfer of the specified library number, in fact, that is, traversal according to the storage type, read out, insert the new library ; The effect is this:
The code is as follows |
Copy Code |
[Root@localhost ~]# php 1.php 1/407 101/407 201/407 301/407 401/407 |
Code on:
The code is as follows |
Copy Code |
<?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; }
|