我有一个Redis服务器运行版本2.4.5和一个11GB的dump.rdb加载到内存中。 它在EC2上运行在高内存4倍超大实例(总共70GB内存)上。 然而,事实certificate,Redis已经占用了50GB的内存,而且越来越多。 我的数据集仍然会变大,大概在20GB左右,所以显然70GB的内存是不够的。 你们有什么想法来克服这个限制,或者如何让Redis减less内存?
我试过Redis的32位,但它死在试图加载数据集到内存启动。
过去也尝试了最大记忆,但得到了奇怪的结果。 还没有尝试虚拟内存,因为我读它是/将被弃用。
买另一台服务器,做分片。 这就是Redis打算如何工作。 如果这不是你想要的,那么Redis是你的目的错误的软件。
如果你有足够的交换,你可以让它耗尽内存。 性能将受到影响。 如果您不想将整个数据集保存在RAM中,则redis是该作业的错误工具。
查看Redis FAQ :
你可以尝试在Redis中加载一个比你的内存大的数据集,看看会发生什么,基本上如果你使用的是现代操作系统,而且DB中有很多很less被访问的数据,那么操作系统的虚拟内存实现将尝试交换磁盘上很less使用的内存页面,只在需要的时候才调用这个页面。 如果你有很多很less使用的大值,这将工作。 如果你的数据库很大,因为你有很多小数值随机访问没有一个特定的模式,这是行不通的(低级别的页面通常是4096字节,并且可以有不同的键/值存储在一个页面。如果频繁使用的密钥很less,则不能在磁盘上交换此页面)。