Redis的巨大文件不会被删除?

时间:2014-05-14 18:16:41

标签: windows redis redis-server

我使用Redis-server for windows(2.8.4 - MSOpenTech)/ windows 8 64bit。

它运作良好,但即使在我跑完之后:

enter image description here

我明白这一点:(这是我的问题)

enter image description here

问题:

- 我没告诉它要删除所有数据库吗?那么为什么那些2/3巨大的文件仍然存在呢?   我怎样才能完全删除这些文件? (没有重新生成)

NB 似乎它正在删除密钥而不释放占用的空间。如果是这样,我如何释放这个未使用的空间?

4 个答案:

答案 0 :(得分:23)

来自https://github.com/MSOpenTech/redis/issues/83 " Redis使用fork()UNIX系统API创建数据存储的时间点快照,以便存储到磁盘。这会影响Redis上的几个功能:AOF / RDB备份,主从同步和群集。 Windows没有类似fork的API,因此我们必须通过将Redis堆放在可与子(准分叉)进程共享的内存映射文件中来模拟此行为。默认情况下,我们将此文件的大小设置为等于物理内存的大小。为了控制这个文件的大小,我们添加了一个maxheap标志。有关此标志用法的详细信息,请参阅msvs \ setups \ documentation中的Redis.Windows.conf文件(也包含在NuGet和Chocolatey发行版中)。 "

答案 1 :(得分:4)

我知道这是一个旧线程,但我面临着与文件大小相同的问题。

如果您的C ssd驱动器出现问题(像我一样),您可以建立目录连接:

1)停止redis服务
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)启动redis服务。现在文件在另一个驱动器中。

如果对此命令有疑问,请检查http://ss64.com/nt/mklink.html

答案 2 :(得分:2)

我在开发机器上遇到了同样的问题。它是通过停止redis服务解决的,我使用WinDirStat(这是我以前用来检测问题的原因)在appdata / local / redis中永久删除这些文件。

然后我开始重新启动redis,事情进展顺利。

在遵循相同的程序之前,其他人可能希望确保不需要此数据。在我看来,这不是关键,因为这是我的开发工作站。

答案 3 :(得分:1)

刷新数据库时,只能从内存中刷新密钥。我不确定为什么你有不同名字的文件,它可能是Redis的Windows端口管理文件的方式的工件,但Redis本身在删除密钥时不会删除文件。您需要在Redis之外管理过时的文件。