Подтвердить что ты не робот

Redis огромные файлы не будут удалять?

Я использую Redis-сервер для Windows (2.8.4 - MSOpenTech)/windows 8 64bit.

Он отлично работает, но даже после запуска:

enter image description here

Я вижу это: (и вот мои вопросы)

enter image description here

Вопрос:

- Разве я просто не сказал, чтобы стереть всю БД? так почему же эти 2/3 огромные файлы все еще там? Как я могу полностью удалить эти файлы? (без повторного генерации)

NB Кажется, что он делает удаление ключей, не освобождая занимаемое пространство. если да, как я могу освободить это неиспользуемое пространство?

4b9b3361

Ответ 1

От https://github.com/MSOpenTech/redis/issues/83 "Redis использует системный API fork() UNIX для создания моментального снимка точки в хранилище данных для хранения на диске. Это влияет на несколько функций в Redis: резервное копирование AOF/RDB, синхронизацию ведущего-ведомого и кластеризацию. не имеет доступного для вилки API, поэтому нам пришлось имитировать это поведение, поместив кучу Redis в файл с отображением памяти, который может использоваться совместно с дочерним (квази-разветвленным) процессом. По умолчанию мы устанавливаем размер этого файла чтобы быть равным размеру физической памяти. Чтобы контролировать размер этого файла, мы добавили флаг maxheap. См. файл Redis.Windows.conf в msvs\setups\documentation (также входящий в дистрибутивы NuGet и Chocolatey) для получения подробной информации об использовании этого флага.

Ответ 2

Я знаю, что это старый поток, но я сталкиваюсь с теми же проблемами с размерами файлов.

Если у вас есть проблемы с вашим диском ssd (например, я), вы можете создать соединение с каталогом:

1) Остановить повторный сервис
2) Переместите папку C:\Windows\ServiceProfiles\NetworkService\AppData\Local\Redis на другой диск/местоположение.
3) Откройте командную строку в C:\Windows\ServiceProfiles\NetworkService\AppData\Local, затем выполните:

mklink/J "C:\Windows\ServiceProfiles\NetworkService\AppData\Local\Redis" "[newpath]"

PD: [newpath] должен быть абсолютным, например "D:\directory junctions\Redis"

4) Начните повторную службу. Теперь файлы находятся на другом диске.

Отметьте http://ss64.com/nt/mklink.html, если вы сомневаетесь в этой команде.

Ответ 3

Я столкнулся с такой же проблемой на моей машине разработки. Это было разрешено, остановив службу redis, и я использовал WinDirStat (именно это я и использовал для обнаружения проблемы изначально), чтобы навсегда удалить эти файлы в appdata/local/redis.

Затем я снова начал делать резервную копию, и все работает нормально.

Прежде чем следовать этой же процедуре, другие могут захотеть убедиться, что эти данные не нужны. В моем случае это не критично, так как это моя рабочая станция разработки.

Ответ 4

Когда вы очищаете БД, вы только очищаете ключи от памяти. Я не уверен, почему у вас есть файлы с разными именами, это может быть артефакт того, как порт Windows Redis управляет файлами, но сам Redis не удаляет файлы при удалении ключей. Вам нужно будет управлять устаревшими файлами вне Redis.