草庐IT

LRU-Eviction

全部标签

python - 如何应用 functools.lru_cache 来使用可变参数?

我有一个函数,其中一个参数是numpy.ndarray。它是可变的,所以它不能被lru_cache缓存。有现成的解决方案吗? 最佳答案 可能最简单的方法是内存一个只接受不可变对象(immutable对象)的版本。假设您的函数接受一个np.array,我们假设它是一个一维数组。幸运的是,它很容易被翻译成一个元组:importnumpyasnpa=np.array([1,2,3,4])>>tuple(a)(1,2,3,4)反之亦然:>>np.array(tuple(a))array([1,2,3,4])所以你得到类似的东西#Functi

caching - 将 Azure Redis 缓存设置为 LRU

使用Azurerediscache的预览,而且效果很好。但我无法弄清楚如何将其配置为LRU缓存,如redis文档所述。异常(exception)是StackExchange.Redis.RedisServerException:ERRunknowncommand'CONFIG'我的代码是server.ConfigSet("maxmemory","250m");server.ConfigSet("maxmemory-policy","allkeys-lru"); 最佳答案 Config当前已为初始AzureRedis缓存(预览版)禁用

redis - 使用redis作为postgres的LRU缓存

我有postgres9.3db,我想使用redis来缓存对DB的调用(基本上类似于memcached)。我关注了这些docs,这意味着我基本上已经将redis配置为用作LRU缓存。但我不确定下一步该怎么做。我如何告诉Redis跟踪对数据库的调用并缓存它们的输出?我怎么知道它在工作? 最佳答案 在伪代码中:seeifredishastherecordby'record_type:record_id'ifsoreturntheresultifnotthenquerypostgresfortherecord_idintherecord_t

caching - 如果什么都没有过期,Redis maxmemory-policy volatile-lru 会驱逐吗?

我有一个Redis服务器,其maxmemory-policy设置为volatile-lru。文档表明这将在达到内存限制时从设置了过期的条目集中逐出。在这种情况下,redis是否只会驱逐过期的项目?如果内存中的所有内容都设置了过期时间,但没有任何内容超过过期时间,那么当达到最大内存时是否会驱逐任何内容? 最佳答案 如果您的逐出策略设置为任何volatile-*策略,当内存耗尽且没有volatile键可逐出时,Redis将返回OOM错误。 关于caching-如果什么都没有过期,Redism

php - 如何将 Redis 用于 Postgresql 的 LRU 缓存?

我是Redis的新手,想知道如何一起使用Redis和PostgreSql—特别是将Redis仅用于Postgres中的LRU缓存。Redis连接Postgres有什么特别的配置吗?那如果我要存储数据,我应该把它存储在Postgresdb中吗?如果是,Redis是做什么的?谢谢。 最佳答案 我认为您误解了像Redis或memcached这样的内存存储可以为您做什么。它们没有连接到PostgreSQL或任何其他RDBMS。您的应用程序的工作是在两个存储中写入数据:永久存储(在您的例子中是PostgreSQL)和临时存储(Redis)。R

Redis 内存不足,即使使用 allkeys-lru 策略

我有一个带有maxmemory512MB和maxmemory-policyallkeys-lru的Redis服务器,但是一旦服务器在使用一天后已满,我就无法添加任何更多的项目:redis127.0.0.1:6379[3]>setfoooo123(error)OOMcommandnotallowedwhenusedmemory>'maxmemory'.恕我直言,LRU策略永远不应该发生。我将一些服务器信息复制到此Pasebin:http://pastebin.com/qkax4C7A我该如何解决这个问题?注意:我正在尝试使用maxmemory,因为我的Redis服务器不断消耗内存,即使几

performance - Redis 最大内存策略 : performances of volatile-lru vs allkeys-lru

假设redis实例中的所有键都设置了过期时间,volatile-lru和allkeys-lru是相似的。但是,当删除key时,两者之间是否存在显着的性能差异?奖励问题:在配置了allkeys-lru策略的2个不同实例之间,具有相同的内容和相同的配置,除了:实例A的所有键都设置了过期(不同的过期值)实例B没有设置过期的键除了实例A中由于过期位而产生的内存开销外,当通过allkeys-lru算法删除key时,两者之间是否存在性能差异?在这两种情况下,我都在谈论64位linux上的redis2.4.x实例,当达到最大内存时,maxmemory=3Gb具有4-5000个键(大多数键是哈希值)。

ruby-on-rails - 需要 LRU 缓存时,Memcached 与 Redis 作为 Rails.cache

我目前使用Redis作为Sidekiq的工作队列。我也有兴趣将它用作Rails.cache的缓存机制。推荐的Rails缓存机制永远不会使项目过期,并且依赖于逐出最近最少使用(LRU)的项目。不幸的是,默认情况下,Redis未配置为逐出最近最少使用的项目,而推荐的缓存存储memcached是。此外,驱逐项目不是我希望我的工作队列的行为,并且配置相同的Redis实例来执行此操作可能会导致不良结果。无论如何,我也不希望我的队列与我的缓存共享周期。在这种情况下你们会推荐什么?第二个redis存储充当缓存并配置了LRU?还是直接用rails推荐的memcachedcachestore,只用red

java - DBCP : removeAbandoned VS eviction

我无法弄清楚removeAbandoned和eviction之间的区别。我在某处读到removeAbandoned已被弃用,但官方文档(http://commons.apache.org/dbcp/configuration.html)中的任何地方都没有提及。所以,如果有人能启发我,将不胜感激:)谢谢! 最佳答案 它们的含义不同:当数据库连接未被应用程序(在池中空闲)足够长的时间并被丢弃时,就会发生“驱逐”“废弃连接”是指数据库连接在一些时间段后仍被应用程序使用,通常足够长以表明连接正在泄漏驱逐并不表示您的代码有问题(只是应用程序在

java - 实现 LRU 缓存的最佳方法

我正在研究LRU缓存实现的这个问题,在缓存的大小已满后,弹出最近最少使用的项目并将其替换为新项目。我想到了两种实现方式:1)。创建两个看起来像这样的mapstd::maptime_to_keystd::map>LRUCache要插入一个新元素,我们可以将当前时间戳和值放入LRUCache。而当缓存的大小已满时,我们可以通过找到time_to_key中存在的最小时间戳并从中删除相应的键来驱逐最近的元素LRUCache。插入一个新item是O(1),更新时间戳是O(n)(因为我们需要在time_to_中查找时间戳对应的k键。2)。有一个链表,其中最近最少使用的缓存出现在头部,新项目添加在尾