Избавление от файлов temp-xxxx.rdb - PullRequest
1 голос
/ 10 октября 2011

При запуске redis из каталога с redis.conf, который включает в себя:

save 60 10000
dir ./

, он сохраняет временный temp-1234.rdb (с постоянно меняющимся номером), чтобы сохранить постоянство.Проблема в том, что я запускаю redis-сервер из моего git-репозитория, и эти временные файлы создаются там и отображаются как неотслеживаемые.

Есть ли способ не дать Redis их генерировать (или генерировать)в другом месте)?

Или мне просто добавить их в .gitignore?

Ответы [ 2 ]

2 голосов
/ 10 октября 2011

Вы можете изменить значение по умолчанию dir ./ (текущий рабочий каталог) в redis.conf где-нибудь за пределами вашего git-репо.

# For default save/load DB in/from the working directory
# Note that you must specify a directory not a file name.
#dir ./
dir /home/octopus/redis_server/
0 голосов
/ 10 января 2014

Вы можете изменить свою стратегию Redis Persistence, настроив файл .conf.но temp- **. rdb всегда будет находиться в том же пути к каталогу, который по умолчанию ./.

числовой ** указывает pid, которому принадлежитк процессу, размеченному сервером redis для сохранения БД на диске, после завершения работы включается атомарное переименование.он существует некоторое время со старым файлом rdb.

необходимость добавления их в .gitignore зависит от вашей возможности при выполнении "git add **".это шанс включить, когда bgSaving работает только сейчас.Конечно, вы можете создать такое правило без вреда, только если вы гарантируете, что оно исключает другие обычные файлы.

найдите файл rdb.c в каталоге redis src:

строка "snprintf (tmpfile), 256, "temp-% d.rdb", (int) getpid ()); "

 /* Save the DB on disk. Return REDIS_ERR on error, REDIS_OK on success */
int rdbSave(char *filename) {
    dictIterator *di = NULL;
    dictEntry *de;
    char tmpfile[256];
    char magic[10];
    int j;
    long long now = mstime();
    FILE *fp;
    rio rdb;
    uint64_t cksum;

    snprintf(tmpfile,256,"temp-%d.rdb", (int) getpid());
    fp = fopen(tmpfile,"w");
    if (!fp) {
        redisLog(REDIS_WARNING, "Failed opening .rdb for saving: %s",
            strerror(errno));
        return REDIS_ERR;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...