从包含redis.conf
的目录启动redis时包含:
save 60 10000
dir ./
它会保存一个临时temp-1234.rdb
(数字始终在变化)以保持持久性。问题是,我从我的git repo中启动了redis-server,这些临时文件在那里生成并显示为未跟踪。
有没有办法让redis不会生成它们(或在其他地方生成它们)?
或者我应该将它们添加到.gitignore
?
答案 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;
}