https://github.com/iwizard7/redis-dump-restore
The script dumps and restores Redis database data to and from JSON files.
https://github.com/iwizard7/redis-dump-restore
backup redis restore
Last synced: 5 months ago
JSON representation
The script dumps and restores Redis database data to and from JSON files.
- Host: GitHub
- URL: https://github.com/iwizard7/redis-dump-restore
- Owner: iwizard7
- License: apache-2.0
- Created: 2024-08-28T08:42:54.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2024-09-02T10:31:56.000Z (almost 2 years ago)
- Last Synced: 2025-08-21T01:25:19.713Z (10 months ago)
- Topics: backup, redis, restore
- Language: Python
- Homepage:
- Size: 76.2 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[](https://github.com/iwizard7/redis-dump-restore/actions/workflows/pylint.yml) [](https://github.com/iwizard7/redis-dump-restore/actions/workflows/codeql.yml) 
# Redis Data Dump Utility ⚙️
## Описание
Этот Python скрипт позволяет сохранять и загружать данные из базы данных Redis в файл JSON и обратно. Он поддерживает функции для:
* Сохранения всех ключей или ключей по маске из выбранной базы данных Redis в файл.
* Загрузки данных из файла JSON в выбранную базу данных Redis.
## Функционал
### Сохранение данных из Redis в файл:
* Выберите базу данных Redis.
* Укажите маску ключа (опционально) для фильтрации ключей.
* Укажите имя файла для сохранения дампа данных.
### Загрузка данных из файла в Redis:
* Укажите имя файла с дампом данных.
* Выберите базу данных Redis для загрузки данных.
## Установка
Убедитесь, что у вас установлен Python 3.6 или выше. Вы можете проверить это с помощью команды:
```bash
python --version
```
Установите необходимые зависимости:
```bash
pip install redis
```
## Использование
Сохранение данных:
Запустите скрипт:
```bash
python redis_dump_util.py
Выберите опцию “1” для сохранения данных в дамп.
Введите номер базы данных Redis.
Укажите маску ключа для фильтрации (оставьте пустым для сохранения всех ключей).
Укажите имя файла для сохранения дампа.
```
Загрузка данных:
Запустите скрипт:
```bash
python redis_dump_util.py
Выберите опцию “2” для загрузки данных.
Введите имя файла с дампом.
Укажите номер базы данных Redis. Дамп будет восстановлен в эту базу.
```
## Пример использования:
Для сохранения данных из базы данных Redis с номером 2 в файл backup.json:
```bash
python redis_dump_util.py
Выберите “1” для сохранения данныхВведите “2” для номера базы данных
Введите маску ключа, если необходимо (или оставьте пустым)
Введите “backup.json” для имени файла
```
Для загрузки данных из файла backup.json в базу данных Redis с номером 2:
```bash
python redis_dump_util.py
Выберите “2” для загрузки данныхВведите “backup.json” для имени файла
Введите “2” для номера базы данных
```
## Фильтрация ключей по маске
В скрипте для выгрузки данных из Redis используется функция `SCAN` с параметром `MATCH`, который позволяет фильтровать ключи по шаблону.
Шаблон для `MATCH` может быть полезен для выборочного сохранения данных, основываясь на части ключа.
Основные правила для написания шаблона ключей:
### Основные шаблоны:
1. **Все ключи**:
```python
key_pattern = '*'
```
Это соответствует всем ключам в базе данных.
2. **Ключи, начинающиеся с определенного префикса**:
```python
key_pattern = 'prefix:*'
```
Например, `user:*` найдет все ключи, начинающиеся с `user:`.
3. **Ключи, заканчивающиеся на определенное значение**:
```python
key_pattern = '*:suffix'
```
Например, `*:data` найдет все ключи, заканчивающиеся на `:data`.
4. **Ключи, содержащие определенный подстроку**:
```python
key_pattern = '*part*'
```
Например, `*session*` найдет все ключи, содержащие `session` где угодно.
5. **Ключи с определенным суффиксом**:
```python
key_pattern = 'prefix:*suffix'
```
Например, `session:*:active` найдет ключи, соответствующие паттерну `session:*:active`.
### Примеры использования шаблонов:
- **Вывод всех ключей в базе данных**:
```python
key_pattern = '*'
```
- **Вывод всех ключей, которые начинаются с `user:`**:
```python
key_pattern = 'user:*'
```
- **Вывод всех ключей, которые содержат `session`**:
```python
key_pattern = '*session*'
```
- **Вывод всех ключей, которые начинаются с `cache:` и заканчиваются на `:2024`**:
```python
key_pattern = 'cache:*:2024'
```
## История изменений
Основные изменения:
#Обработка данных при выгрузке в файл:
smembers теперь преобразуется в список для удобства записи в JSON.
Добавлен параметр default=str в json.dump для обработки нестандартных типов данных.
### Обработка данных при загрузке из файла:
Обработка списков и наборов теперь улучшена для корректной загрузки данных.
Добавлена обработка пустых списков (хотя они не загружаются, это может быть полезно для дальнейших улучшений).
### Устранены потенциальные ошибки:
Преобразование множества в список перед записью в файл.
Убедитесь, что hmset поддерживается вашей версией redis-py, поскольку в новых версиях он может быть заменен на hset.
### Обработка ошибок декодирования:
При декодировании строковых данных теперь добавлена обработка UnicodeDecodeError. Если данные не могут быть декодированы в UTF-8, они сохраняются как бинарные данные.
### Обработка бинарных данных при загрузке:
При загрузке данных из файла добавлена возможность сохранения бинарных данных, если они были сохранены в этом формате.
Ввод IP-адреса Redis теперь имеет значение по умолчанию 127.0.0.1, если пользователь оставляет поле пустым.
Порт Redis по умолчанию установлен на 6379, если пользователь не вводит его вручную.
## Требования
Python 3.6 или выше
Библиотека redis (устанавливается с помощью pip)
## Лицензия
Этот проект лицензирован под MIT License. См. LICENSE для подробностей.