Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Redis交换?_Redis - Fatal编程技术网

Redis交换?

Redis交换?,redis,Redis,基于此屏幕截图:(死链接) redis需要两倍于我想象的内存吗?我相信它会产生另一个进程来保存到磁盘,这是否意味着它实际上会复制内存?我应该始终假设,如果我有16 GB的ram 8,那么单个redis进程的最大容量是多少?我认为redis不应该占用~8GB的空间。您可能需要升级到2.X,因为我认为您可能存在内存泄漏 但是,回到你的问题,我认为Redis确实创建了一个新的进程来保存到磁盘,但是Redis存储在内存中。如果电源故障导致RAM中的所有数据丢失,它会保存到磁盘上。根据您的数据,Redis

基于此屏幕截图:(死链接)


redis需要两倍于我想象的内存吗?我相信它会产生另一个进程来保存到磁盘,这是否意味着它实际上会复制内存?我应该始终假设,如果我有16 GB的ram 8,那么单个redis进程的最大容量是多少?

我认为redis不应该占用~8GB的空间。您可能需要升级到2.X,因为我认为您可能存在内存泄漏


但是,回到你的问题,我认为Redis确实创建了一个新的进程来保存到磁盘,但是Redis存储在内存中。如果电源故障导致RAM中的所有数据丢失,它会保存到磁盘上。根据您的数据,Redis很容易占用高达8GB的空间。也就是说,您所说的“双内存”是一条红鲱鱼:它确实是fork和“copy”内存,但由于写上拷贝技术,内存在进程之间共享,并且只有当两个进程中的一个进程更改了内存的特定字节时,才会写入


因此,在保存到磁盘时,只有在保存过程中更改的键才会导致两个进程之间的额外内存分配。其他一切都是共享的。希望这能有所帮助。

如果redis有8GB内存,它将不会使用更多的内存。但是,在保存期间,fork()将使新的redis“处理”,并将复制所有数据,例如,8 GB以上。由于它无法在内存中容纳该文件,因此将在交换文件(例如磁盘)上交换该文件。保存完成后,内存将被释放

我在我的服务器上注意到了这一点,很多sphinx进程正在运行,2台redis服务器同时使用4GB和save


在后台保存时,它不会对进程内存映像进行逐字节复制。请参阅:“Redis后台保存模式依赖于现代操作系统中fork的copy-on-write语义……”我想这只适用于*nix平台?我想在windows上运行Redis时,内存的双重使用是真的吗?