摆脱temp-xxxx.rdb文件

时间:2011-10-10 14:51:54

标签: git redis

从包含redis.conf的目录启动redis时包含:

save 60 10000
dir ./

它会保存一个临时temp-1234.rdb(数字始终在变化)以保持持久性。问题是,我从我的git repo中启动了redis-server,这些临时文件在那里生成并显示为未跟踪。

有没有办法让redis不会生成它们(或在其他地方生成它们)?

或者我应该将它们添加到.gitignore

2 个答案:

答案 0 :(得分:2)

您可以将dir ./中的redis.conf(当前工作目录)的默认值更改为git repo之外的某个位置。

# 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/

答案 1 :(得分:0)

您可以通过配置.conf文件来更改Redis Persistence策略。但是temp- * *。rdb将始终位于相同的dir路径中,默认为./。

数字 * *表示属于redis服务器分叉的进程的pid,用于将数据库保存在磁盘上,工作完成后会进行原子重命名。它与旧的rdb文件存在一段时间。

是否应将它们添加到.gitignore取决于您执行“git add * *”时的机会。当bgSaving刚刚工作时,它有机会包括在内。因为只有当你保证它不包括其他普通文件时,你才能制定这样一条没有伤害的规则。

在redis src目录中查找rdb.c:

行“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;
    }