[https://redis.io/ Redis] – простое, быстрое и удобное key-value хранилище данных. При масштабирование любого приложения возникает необходимость переноса данных между серверами. Иногда не нужно переносить всю базу, а только несколько выбранных ключей.
Первое что нужно сделать убедиться что на обоих серверах одинаковая версия Redis, выполняем команду:
redis-server --version
В ответ получим информацию о версии:
Redis server v=**3.0.3** sha=00000000:0 malloc=jemalloc-3.6.0 bits=64 build=58013d157c63182b
Если версии не совпадают, то нужно на одном из серверов обновить redis, после чего перейти непосредственно к переносу. В redis данные можно перенести разными способами, мы рассмотрим два наиболее простых. Для удобства сервер с которого переносим назовем A, сервер куда переносим B.
Для первого способа между серверами нужно установить связь. Заходим на сервер B и открываем конфиг redis который находиться по пути /etc/redis/redis.conf, находим параметр bind и изменяем значение на 0.0.0.0.
Для проверки связи между серверами запускаем на сервере A команду:
redis-cli -h **$target_host** -p **$target_port**
$target_host и $target_port берем с сервера В, в ответ после запуска команды должны получить надпись PONG
После чего на сервере A запускаем команду переноса:
redis-cli --scan --pattern '**$pattern**' | while read key; do echo "Copying $key";
redis-cli --raw -h **$source_host** -p **$source_port** -n **$source_db** DUMP "$key" | head -c -1|
redis-cli -x -h **$target_host** -p **$target_port** -n **$target_db** RESTORE "$key" 0; done
$pattern – регулярное выражение по которому выбираем ключи;
$source_* – параметры сервера A;
$target_* – параметры сервера B;
После чего проверяем наличие ключей на обоих серверах и меняем параметр bind обратно на 127.0.0.1
Для второго способа необходимо сделать:
redis-cli --scan --pattern "**$pattern**" | while read key; do echo "Copying $key"; redis-cli --raw -h **$source_host** -p **$source_port** -n **$source_db** DUMP "$key" | head -c -1 > move_$key; done
cat **$file_name** | redis-cli -x restore **$key_name** 0;
for f in **~/move_t***; do cat $f | redis-cli -x restore "**${f//root/move_t/t}**" 0; done
<h2>TL;DR
Перенос выбранных ключей redis на другой сервер можно осуществить с помощью простой команды:
redis-cli --scan --pattern '**$pattern**' | while read key; do echo "Copying $key";
redis-cli --raw -h **$source_host** -p **$source_port** -n **$source_db** DUMP "$key" | head -c -1|
redis-cli -x -h **$target_host** -p **$target_port** -n **$target_db** RESTORE "$key" 0; done
Прокси (proxy), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…
Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…
Повсеместное распространение смартфонов привело к огромному спросу на мобильные игры и приложения. Миллиарды пользователей гаджетов…
В перечне популярных чат-ботов с искусственным интеллектом Google Bard (Gemini) еще не пользуется такой популярностью…
Скрипт (англ. — сценарий), — это небольшая программа, как правило, для веб-интерфейса, выполняющая определенную задачу.…
Дедлайн (от англ. deadline — «крайний срок») — это конечная дата стачи проекта или задачи…