gpt4 book ai didi

database - Redis MAXMEMORY 管理 volatile-lru vs allkeys-lru

转载 作者:行者123 更新时间:2023-12-03 06:36:47 24 4
gpt4 key购买 nike

我使用 redis 作为数据存储而不是缓存,但是设置了 maxmemory 限制,据我了解,maxmemory 指定了 redis 可以使用的 RAM,如果达到内存限制,它不应该将数据交换回磁盘。
我有多种 key ,而有些 key 设置了到期时间,而其他 key 则没有
我已经尝试了 volatile-lru 和 allkeys-lru,如文档中指定的那样,它们都根据属性删除了旧 key 。
我应该使用什么配置来避免数据丢失?我应该在所有键上设置一个过期时间并使用 volatile-lru 吗?我错过了什么?

最佳答案

在 Redis 2.4/2.6 中不推荐/删除了将内存交换到磁盘(虚拟内存)。很可能,您没有使用这样的旧版本。

您可以使用 maxmemory 控制当内存耗尽时 Redis 的行为和 maxmemory-policy .两者都是 redis.conf 中的设置. Take a look . 将内存交换到磁盘不是一种选择 在最近的 Redis 版本中。

If Redis can't remove keys according to the policy, or if the policy is set to 'noeviction', Redis will start to reply with errors to commands that would use more memory, like SET, LPUSH, and so on, and will continue to reply to read-only commands like GET.



maxmemory已达到,只有在 maxmemory-policy 中设置的驱逐策略才会丢失数据指示Redis驱逐一些键以及如何选择这些键( volatile 或全部,lfu/lru/ttl/random)。否则,Redis 开始拒绝写入命令以保留内存中已有的数据。继续提供读取命令。

您可以在没有 maxmemory 的情况下运行 Redis设置(默认),因此它将继续使用内存,直到操作系统内存耗尽。

如果您的操作系统启用了虚拟内存,并且 maxmemory设置允许 Redis 遍历可用的物理内存,然后您的操作系统(不是 Redis)开始将内存换出到磁盘。你可以期待性能下降。

关于database - Redis MAXMEMORY 管理 volatile-lru vs allkeys-lru,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59628769/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com