当前位置: 首页 > 面试题库 >

如何使Redis仅对某些密钥选择LRU收回策略?

张逸清
2023-03-14
问题内容

有没有办法让Redis仅为特定密钥选择LRU(最近最少使用)驱逐策略?我希望一组键能够持久存储,并且如果没有足够的内存,则永远不要将其逐出。另一方面,如果内存不足,我希望自由移出另一组键。


问题答案:

Redis的驱逐政策可能对您的情况有利。您可以将maxmemory-policy设置为volatile-lru,这会使Redis进行以下操作:

使用LRU算法删除具有过期集的密钥

这意味着未设置为TTL的键不会丢失,因此不会被逐出,但是具有TTL的键将按照最近使用的顺序删除。

实际上,volatile-lru是默认策略,因此您要做的就是确保为当内存已满时愿意丢失的密钥设置了TTL。

编辑:自版本3.0起,默认驱逐策略为“
noeviction”。(更新日志)



 类似资料:
  • 问题内容: Redis如何实现密钥过期?从这里我了解到Redis存储了密钥将过期的时间,但是这是如何实现的呢? 问题答案: 简而言之-每个Redis对象都有一个过期时间。除非您将对象设置为过期,否则该时间为“从不”。 现在,到期机制本身是半延迟的。延迟过期意味着您实际上不会在读取对象之前使它们过期。读取对象时,我们检查它的过期时间戳记,如果它是过去的,则不返回任何内容,并在到达该对象时删除该对象。

  • 这是我的密码: 它返回表中所有列的数组。但我不需要把所有的专栏都写下来。我只需要返回以下列:。我对此进行了搜索并找到了答案:(使用函数) 但它并没有返回预期的结果。它返回以下内容: 如您所见,没有和列。我怎样才能修好它?

  • 问题内容: 我正在使用Elasticsearch索引我的文档。 是否有可能指示它仅返回特定字段,而不是它存储的整个json文档? 问题答案: 是的 使用源过滤器。如果您使用JSON搜索,它将看起来像这样: 在ES 2.4及更低版本中,您还可以在search API中 使用fields选项: ES 5+中已弃用此功能。而且,源过滤器更强大!

  • 使用简化了Hibernate ORM映射。 所有的指南都解释了如何编写不同的查询,但并不清楚如何只选择某些属性。 如果我不需要整个对象,而是需要数据库中所有人员的? 是否可以使用仅选择某些属性?

  • 问题内容: 我正在使用Bottle开发应用程序。在我的注册表中,我要通过邮件确认带有唯一密钥的电子邮件。我将此密钥存储在REDIS中,有效期为4天。如果用户未在4天内确认电子邮件,则密钥将过期。为此,我想从数据库(mongoDB)中永久删除用户条目。 当然,我不需要对我的Redis服务器进行连续轮询来检查密钥是否存在。 有什么办法可以从Redis获得回调吗? 或者还有其他有效的方法吗? 问题答案:

  • 我有工作的c转换器: 在Web配置中,我有: 一切都很好,但它适用于所有控制器,我需要它只执行一些控制器。 我们可以指定哪些转换器或参数应该与自定义转换器一起使用,哪些不应该?