数码资讯
在maxmemory设置和Redis的消除策略浅谈
对Redis的maxmemory参数用于控制的最大内存容量,Redis可以使用。如果在maxmemory值超标,消除策略用于在expaire词典处理键。 在Redis的消除策略: redis提供以下用户选择消除策略,为noeviction策略的默认策略: noeviction:当使用内存达到一个阈值
选购提示
关注价格、性能、续航、售后和真实使用场景,理性比较后再下单。
对Redis的maxmemory参数用于控制的最大内存容量,Redis可以使用。如果在maxmemory值超标,消除策略用于在expaire词典处理键。
在Redis的消除策略:
redis提供以下用户选择消除策略,为noeviction策略的默认策略:
noeviction:当使用内存达到一个阈值,所有的命令引起的记忆将是错误的。
allkeys LRU:主键中的空间,最近未使用的关键是去除。
挥发性LRU:在关键的空间设置过期时间,最近未使用的关键是去除。
allkeys随机:主键中的空间,关键是消除随机。
随机变量:在到期时间设置的密钥空间中随机删除一个随机密钥。
易失性TTL:在设置到期时间的密钥空间中,首先删除过期时间的密钥。
PS:
对于maxmemory设置,如果使用的应用程序的情况下被使用作为一个分贝,不设置此选项,因为DB是不可容忍的数据丢失。
如果您用作缓存,则可以启用此选项(事实上,由于消除策略,即缓存)。
但在集群环境中(尤其是多从例),maxmeomory的价值不是由真正的redis使用的内存。期权价值不包括奴隶的输出缓冲器。
在Redis的早期版本有一个bug。在多个奴隶的情况下,该maxmemory值设置,及消除策略被设置在相同的时间,这将对主被抹去,逐渐引起数据。
antirez先生给出了问题的原因:
这个问题的发生有以下原因:
Redis达到配置的限制,所以它试图终止键。
将钥匙变成明确的DELs派来的奴隶从主人的控制
但是这样,如果有足够的奴隶,发射协议,发射,它也被称为
因此,关键的驱逐过程开始进入一个无限循环。
对一个给定的点上有每个客户的输出队列的静态缓冲区的一部分(包括奴隶)减轻这种在一定条件下,但一旦使用不能使用输出缓冲区要使用队列触发。对象是无限循环
简单的说,删除过期的关键,我们需要生成DEL命令发送到下位机。如果奴隶是不够的,输出缓冲区将采取了足够的内存,导致更多的密钥到期,所以它落在无线循环。
有各种各样的解决方案,如输出缓冲区,它可以不包括在maxmemory。
因此,在配置描述的3个版本中有以下描述:
如果你有奴隶#警告:连接到一个实例上maxmemory,
输出的大小#需要养活的奴隶的缓冲区中
#从使用的内存数,网络问题/ resyncs将
不触发回路,#键被驱逐,并依次输出
奴隶是全#缓冲DELs键删除被触发
#更多的钥匙,等等,直到完全清空数据库。
#
#总之如果你有奴隶附…有人建议你定个更低的价格。
对于maxmemory这样#极限有奴隶系统内存
#输出缓冲器(但这不是如果政策is'noeviction)需要。
#
# maxmemory
因此,它是明确的,如果有一个奴隶,这是合理的建议maxmemory适当降低一定的空间来输出缓冲器。
上面提到的Redis的maxmemory设置和消除策略都是萧边分享你的内容。我们希望能给你一个参考,希望你能支持我们。
在Redis的消除策略:
redis提供以下用户选择消除策略,为noeviction策略的默认策略:
noeviction:当使用内存达到一个阈值,所有的命令引起的记忆将是错误的。
allkeys LRU:主键中的空间,最近未使用的关键是去除。
挥发性LRU:在关键的空间设置过期时间,最近未使用的关键是去除。
allkeys随机:主键中的空间,关键是消除随机。
随机变量:在到期时间设置的密钥空间中随机删除一个随机密钥。
易失性TTL:在设置到期时间的密钥空间中,首先删除过期时间的密钥。
PS:
对于maxmemory设置,如果使用的应用程序的情况下被使用作为一个分贝,不设置此选项,因为DB是不可容忍的数据丢失。
如果您用作缓存,则可以启用此选项(事实上,由于消除策略,即缓存)。
但在集群环境中(尤其是多从例),maxmeomory的价值不是由真正的redis使用的内存。期权价值不包括奴隶的输出缓冲器。
在Redis的早期版本有一个bug。在多个奴隶的情况下,该maxmemory值设置,及消除策略被设置在相同的时间,这将对主被抹去,逐渐引起数据。
antirez先生给出了问题的原因:
这个问题的发生有以下原因:
Redis达到配置的限制,所以它试图终止键。
将钥匙变成明确的DELs派来的奴隶从主人的控制
但是这样,如果有足够的奴隶,发射协议,发射,它也被称为
因此,关键的驱逐过程开始进入一个无限循环。
对一个给定的点上有每个客户的输出队列的静态缓冲区的一部分(包括奴隶)减轻这种在一定条件下,但一旦使用不能使用输出缓冲区要使用队列触发。对象是无限循环
简单的说,删除过期的关键,我们需要生成DEL命令发送到下位机。如果奴隶是不够的,输出缓冲区将采取了足够的内存,导致更多的密钥到期,所以它落在无线循环。
有各种各样的解决方案,如输出缓冲区,它可以不包括在maxmemory。
因此,在配置描述的3个版本中有以下描述:
如果你有奴隶#警告:连接到一个实例上maxmemory,
输出的大小#需要养活的奴隶的缓冲区中
#从使用的内存数,网络问题/ resyncs将
不触发回路,#键被驱逐,并依次输出
奴隶是全#缓冲DELs键删除被触发
#更多的钥匙,等等,直到完全清空数据库。
#
#总之如果你有奴隶附…有人建议你定个更低的价格。
对于maxmemory这样#极限有奴隶系统内存
#输出缓冲器(但这不是如果政策is'noeviction)需要。
#
# maxmemory
因此,它是明确的,如果有一个奴隶,这是合理的建议maxmemory适当降低一定的空间来输出缓冲器。
上面提到的Redis的maxmemory设置和消除策略都是萧边分享你的内容。我们希望能给你一个参考,希望你能支持我们。
声明:本文内容用于数码产品信息整理与选购参考,具体价格、库存、售后政策以官方渠道和电商页面实时信息为准。