So implementieren Sie die Datenmigration zwischen zwei Redis-Servern

So implementieren Sie die Datenmigration zwischen zwei Redis-Servern

Nachfragehintergrund

Ein seit einem Jahr genutzter Huawei-Cloud-Server ist abgelaufen. Aus verschiedenen Gründen ist eine Migration in die Tencent Cloud geplant. Da in Redis auch einige persistente Daten gespeichert sind, muss auch eine Migration durchgeführt werden.

Implementierungsplan

Als erstes muss geprüft werden, ob Redis selbst ein Migrationstool bereitstellt. Dies ist zwar der Fall, aber es ist nicht flexibel genug und problematischer. Wenn ich beispielsweise nur einige Schlüssel migrieren möchte, ist dies nicht möglich Die Implementierung in Code ist sehr flexibel und kann auf das Unternehmen abgestimmt werden. Die Logik ist flexibel und die Idee ist sehr einfach: Teilen Sie einfach die Verbindung zwischen zwei Redis-Servern, holen Sie sich den gewünschten Schlüssel vom alten Server und schreiben Sie ihn auf den neuen Server.

Referenzcode

Tools::realTimeOutputPrepare();
		//获取新服务器的redis连接
        $newRedis = new Redis(['XXX'], [
            'auth'      => '***',
            'keyPrefix' => '***:'
        ]);
		//获取旧服务器的redis连接
        $oldRedis = new Redis(['XXX'], [
            'auth'      => '***',
            'keyPrefix' => '***:'
        ]);
        //获取指定前缀的所有key
        $oldList = $oldRedis->keys('session_*');
        $index = 1;
        $oldList = $oldList['***'];
        foreach($oldList as $tempKey){
    
    
            if(!$newRedis->exists($tempKey)){
    
    //避免多次执行时相互覆盖了新数据,所以如果存在则跳过
                $newRedis->set($tempKey, $oldRedis->get($tempKey));
                Tools::realTimeOutput('同步第'.$index++.'个key:'.$tempKey);
            }
        }

Acho que você gosta

Origin blog.csdn.net/one_and_only4711/article/details/126289294
Recomendado
Clasificación