{"id":15132549,"url":"https://github.com/iwizard7/redis-dump-restore","last_synced_at":"2026-02-11T02:01:43.019Z","repository":{"id":255153250,"uuid":"848700070","full_name":"iwizard7/redis-dump-restore","owner":"iwizard7","description":"The script dumps and restores Redis database data to and from JSON files.","archived":false,"fork":false,"pushed_at":"2024-09-02T10:31:56.000Z","size":78,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-21T01:25:19.713Z","etag":null,"topics":["backup","redis","restore"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/iwizard7.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-08-28T08:42:54.000Z","updated_at":"2024-09-02T10:31:59.000Z","dependencies_parsed_at":"2024-10-31T12:53:37.022Z","dependency_job_id":null,"html_url":"https://github.com/iwizard7/redis-dump-restore","commit_stats":null,"previous_names":["iwizard7/redis-dump-restore"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/iwizard7/redis-dump-restore","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iwizard7%2Fredis-dump-restore","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iwizard7%2Fredis-dump-restore/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iwizard7%2Fredis-dump-restore/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iwizard7%2Fredis-dump-restore/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/iwizard7","download_url":"https://codeload.github.com/iwizard7/redis-dump-restore/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iwizard7%2Fredis-dump-restore/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29325205,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-11T00:34:26.354Z","status":"online","status_checked_at":"2026-02-11T02:00:08.436Z","response_time":97,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["backup","redis","restore"],"created_at":"2024-09-26T04:20:45.371Z","updated_at":"2026-02-11T02:01:42.983Z","avatar_url":"https://github.com/iwizard7.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Pylint](https://github.com/iwizard7/redis-dump-restore/actions/workflows/pylint.yml/badge.svg)](https://github.com/iwizard7/redis-dump-restore/actions/workflows/pylint.yml) [![CodeQL](https://github.com/iwizard7/redis-dump-restore/actions/workflows/codeql.yml/badge.svg)](https://github.com/iwizard7/redis-dump-restore/actions/workflows/codeql.yml)![GitHub code size in bytes](https://img.shields.io/github/languages/code-size/iwizard7/redis-dump-restore) ![GitHub repo file count (file type)](https://img.shields.io/github/directory-file-count/iwizard7/redis-dump-restore)\n# Redis Data Dump Utility ⚙️\n\n## Описание\n\nЭтот Python скрипт позволяет сохранять и загружать данные из базы данных Redis в файл JSON и обратно. Он поддерживает функции для:\n\n* Сохранения всех ключей или ключей по маске из выбранной базы данных Redis в файл.\n* Загрузки данных из файла JSON в выбранную базу данных Redis.\n\n## Функционал\n\n### Сохранение данных из Redis в файл:\n\n* Выберите базу данных Redis.\n* Укажите маску ключа (опционально) для фильтрации ключей.\n* Укажите имя файла для сохранения дампа данных.\n\n### Загрузка данных из файла в Redis:\n\n* Укажите имя файла с дампом данных.\n* Выберите базу данных Redis для загрузки данных.\n\n## Установка\n\nУбедитесь, что у вас установлен Python 3.6 или выше. Вы можете проверить это с помощью команды:\n\n```bash\npython --version\n```\nУстановите необходимые зависимости:\n```bash\npip install redis\n```\n## Использование\n\nСохранение данных:\nЗапустите скрипт:\n```bash\npython redis_dump_util.py\nВыберите опцию “1” для сохранения данных в дамп.\nВведите номер базы данных Redis.\nУкажите маску ключа для фильтрации (оставьте пустым для сохранения всех ключей).\nУкажите имя файла для сохранения дампа.\n```\nЗагрузка данных:\nЗапустите скрипт:\n```bash\npython redis_dump_util.py\nВыберите опцию “2” для загрузки данных.\nВведите имя файла с дампом.\nУкажите номер базы данных Redis. Дамп будет восстановлен в эту базу.\n```\n\n## Пример использования:\nДля сохранения данных из базы данных Redis с номером 2 в файл backup.json:\n```bash\npython redis_dump_util.py\nВыберите “1” для сохранения данныхВведите “2” для номера базы данных\nВведите маску ключа, если необходимо (или оставьте пустым)\nВведите “backup.json” для имени файла\n```\nДля загрузки данных из файла backup.json в базу данных Redis с номером 2:\n```bash\npython redis_dump_util.py\nВыберите “2” для загрузки данныхВведите “backup.json” для имени файла\nВведите “2” для номера базы данных\n```\n## Фильтрация ключей по маске\nВ скрипте для выгрузки данных из Redis используется функция `SCAN` с параметром `MATCH`, который позволяет фильтровать ключи по шаблону. \nШаблон для `MATCH` может быть полезен для выборочного сохранения данных, основываясь на части ключа. \n\nОсновные правила для написания шаблона ключей:\n\n### Основные шаблоны:\n\n1. **Все ключи**:\n   ```python\n   key_pattern = '*'\n   ```\n   Это соответствует всем ключам в базе данных.\n\n2. **Ключи, начинающиеся с определенного префикса**:\n   ```python\n   key_pattern = 'prefix:*'\n   ```\n   Например, `user:*` найдет все ключи, начинающиеся с `user:`.\n\n3. **Ключи, заканчивающиеся на определенное значение**:\n   ```python\n   key_pattern = '*:suffix'\n   ```\n   Например, `*:data` найдет все ключи, заканчивающиеся на `:data`.\n\n4. **Ключи, содержащие определенный подстроку**:\n   ```python\n   key_pattern = '*part*'\n   ```\n   Например, `*session*` найдет все ключи, содержащие `session` где угодно.\n\n5. **Ключи с определенным суффиксом**:\n   ```python\n   key_pattern = 'prefix:*suffix'\n   ```\n   Например, `session:*:active` найдет ключи, соответствующие паттерну `session:*:active`.\n\n### Примеры использования шаблонов:\n\n- **Вывод всех ключей в базе данных**:\n  ```python\n  key_pattern = '*'\n  ```\n\n- **Вывод всех ключей, которые начинаются с `user:`**:\n  ```python\n  key_pattern = 'user:*'\n  ```\n\n- **Вывод всех ключей, которые содержат `session`**:\n  ```python\n  key_pattern = '*session*'\n  ```\n\n- **Вывод всех ключей, которые начинаются с `cache:` и заканчиваются на `:2024`**:\n  ```python\n  key_pattern = 'cache:*:2024'\n  ```\n\n## История изменений\nОсновные изменения:\n\n#Обработка данных при выгрузке в файл:\n\nsmembers теперь преобразуется в список для удобства записи в JSON.\nДобавлен параметр default=str в json.dump для обработки нестандартных типов данных.\n\n### Обработка данных при загрузке из файла:\nОбработка списков и наборов теперь улучшена для корректной загрузки данных.\nДобавлена обработка пустых списков (хотя они не загружаются, это может быть полезно для дальнейших улучшений).\n\n### Устранены потенциальные ошибки:\nПреобразование множества в список перед записью в файл.\nУбедитесь, что hmset поддерживается вашей версией redis-py, поскольку в новых версиях он может быть заменен на hset.\n\n### Обработка ошибок декодирования: \nПри декодировании строковых данных теперь добавлена обработка UnicodeDecodeError. Если данные не могут быть декодированы в UTF-8, они сохраняются как бинарные данные.\n\n### Обработка бинарных данных при загрузке: \nПри загрузке данных из файла добавлена возможность сохранения бинарных данных, если они были сохранены в этом формате.\n\nВвод IP-адреса Redis теперь имеет значение по умолчанию 127.0.0.1, если пользователь оставляет поле пустым.\nПорт Redis по умолчанию установлен на 6379, если пользователь не вводит его вручную.\n\n## Требования\nPython 3.6 или выше\nБиблиотека redis (устанавливается с помощью pip)\n\n## Лицензия\nЭтот проект лицензирован под MIT License. См. LICENSE для подробностей.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiwizard7%2Fredis-dump-restore","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fiwizard7%2Fredis-dump-restore","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiwizard7%2Fredis-dump-restore/lists"}