配置 redis 不让所有内容都存在于内存中?

配置 redis 不让所有内容都存在于内存中?

我喜欢 redis,因为它允许我对数据结构进行操作。我想看看如果我将更多的数据放入 redis,超过我的内存容量,会发生什么。所以我写了一个循环,反复插入 30k 字节并设置maxmemory 100MB。我估计它会保持在 100mb。它一直在增长。超过 1gb,然后超过 2gb。突然它崩溃了,因为我运行的是 32 位版本。

现在...我不明白 maxmemory 的意义是什么?我使用的是 Windows 版本,所以可能忽略了它。redis 是否必须将所有内容都放在内存中?如果我有一个网站(在 Linux 上),其数据库为 10GB,机器内存为 512MB,那么 redis 可以工作吗?我不需要它非常快,我只是更喜欢在其中修改数据,而不是 sql(尽管我希望它仍然比 mysql 更快)

答案1

maxmemory 的作用是设置 Redis 将使用的最大内存量。但是,您将其置于一个不可能的境地,要求它存储比分配的内存所能容纳的信息更多的信息。如果您为 Redis 提供某种释放内存的方法,它会这样做。但如果没有可丢弃的对象,它就无能为力。

“请注意,[maxmemory] ​​设置仅在将 Redis 用作缓存时才是一个好主意。如果您将其用作通用数据库,则需要监视其内存消耗,并在消耗过多资源之前采取措施。”

答案2

Redis 是一个内存数据库,你最好看看设计为“磁盘”的东西,尽管 Redis 有一些非常好的方面我在其他地方很难找到 :(

相关内容