问题标签 [evict]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
306 浏览

redis - 在 redis 中如何根据驱逐来处理列表?

我面临的问题是我想确保列表被全部驱逐。即确保列表中的条目没有被单独驱逐。我们正在寻找使用 LRU 驱逐算法。

我意识到一个列表是通过它的键知道的,所以当一个列表被驱逐时最有可能发生的事情是它会通过它的密钥驱逐整个列表。是否有任何文件或证据可以让我阅读以确保情况如此,或者这是否如此不言自明以至于没有必要指出?

0 投票
1 回答
1144 浏览

java - ExpireAfterWrite 似乎不起作用

我正在尝试使用谷歌的番石榴缓存,我只是用 expireAfterWrite 测试它,间隔为 1 分钟。在我正在处理的应用程序中,有数百个用户。所以我的理解是,当第一个人访问缓存时,我们从数据库中填充它,然后一分钟计时器应该开始倒计时。现在缓存已满。我们总是会在那一分钟内从缓存中获取它。一分钟后,它将过期,我们再次从数据库中获取它。

但是,似乎每次我在一分钟内访问缓存时,计时器都会重置。这是为什么?如果我在一分钟内没有访问缓存,缓存就会过期并且工作正常。

代码:

编辑

我从控制器调用缓存:

它将有用的数据传递给将其传递给调用数据库的方法的方法。但是,我现在正在尝试重构我的代码以使用 LoadingCache 但这需要我重写 load() 方法,该方法只使用一个参数,这是关键。我需要的不仅仅是键,我需要调用控制器中的 cacheManager,所以它调用了适当的方法。什么是加载方法?什么时候使用?何时调用以及多久调用一次?它会使我的其他方法无效吗?

0 投票
0 回答
237 浏览

server - com.netflix.eureka.InstanceRegistry 从不驱逐过时的实例

已注册但已死亡的服务实例不会被 InstanceRegistry 驱逐。计时器实例已启动,但方法 isLeaseExpirationEnabled() 始终返回 false。这源于以下几行:

有人知道图片有什么问题吗?感谢您的帮助卢茨

0 投票
0 回答
1176 浏览

asp.net - .NET MemoryCache 中的对象被意外驱逐

我在 ASP.NET 应用程序中使用 .NET MemoryCache 时出现了某种奇怪的行为。问题是,对象将在查看几分钟后被驱逐,似乎没有理由这样做。内存限制在 web.config 中设置:

我的开发机器有 8 GB 的内存,而 w3wp.exe 进程使用了​​大约 0.5 GB。应用程序运行时,机器上仍有 2 GB 可用空间(除了 Visual Studio、Web 浏览器等)

已将 RemovedCallBack 方法添加到每个条目中,以生成每次删除的日志条目,特别是驱逐:

还实现了用于计算当前使用的大小的计数器。我正在使用二进制序列化来估计内存中对象的大小。此刻,第一次驱逐发生了,大约 120 个对象在缓存中,使用的内存约为 6 兆字节。据我了解,这绝不是从缓存中驱逐条目的理由。但它一次又一次地发生,经过几天的调查,我仍然不确定为什么会发生这种情况。

我还查看了对象被驱逐时使用的 .NET 框架源代码中 trim() 函数的内部实现。因此所做的计算并不容易理解,也许有人知道它是如何工作的并且可以为我指出这一点。

如果有人能对此有所了解,那就太好了。

非常感谢你,很抱歉发了这么长的帖子;)

(顺便说一句。这是我的第一篇文章,因此非常感谢任何有关如何改进我的问题的建议)

0 投票
1 回答
235 浏览

c# - 驱逐二级缓存项目 Syscache/Nhibernate

我正在使用 NHibernate 3.3 和 Syscache 二级缓存,我试图从二级缓存中驱逐一个对象,但它似乎不起作用。

我正在根据其他示例使用此代码:

驱逐后,CollectionCache 和 ClassCache 仍然有相同数量的项目。

此外,NhibernateSessionFactory.Instance.Evict(typeof(someObject), SomeObjectId);似乎没有任何效果。

我的用例:我正在处理分离的对象,当另一个应用程序对数据库进行更改时,我需要从二级缓存中逐出这些项目以保持同步。

0 投票
2 回答
136 浏览

caching - Infinispan:如何在从支持 singleFileStore 中逐出条目时收到通知

当缓存条目从内存缓存中被驱逐时,标准驱逐事件会触发。在我们的例子中,只有当它从配置为 SingleFileStore 的重启持久磁盘缓存中被驱逐时,我们才需要通知。这甚至可能吗?

我们使用 Infinispan 作为本地缓存,所以任何集群考虑对我们来说都是没有意义的。

我们的缓存配置如下:

0 投票
0 回答
1853 浏览

java - 带有 expireAfterWrite 的 Guava LoadingCache 何时应该调用 cleanUp()?

这似乎是我自己发现的一件简单的事情,但我在这里。

基本番石榴缓存接口只有这样说cleanUp()

void cleanUp()
执行缓存所需的任何挂起的维护操作。究竟执行了哪些活动——如果有的话——是依赖于实现的。

CacheBuilder()说:

如果 expireAfterWrite 或 expireAfterAccess 被请求,条目可能会在每次缓存修改、偶尔缓存访问或调用 Cache.cleanUp() 时被驱逐。过期的条目可能会被 Cache.size() 计数,但永远不会对读取或写入操作可见。

如果请求了weakKeys、weakValues 或softValues,则缓存中存在的键或值可能会被垃圾收集器回收。在每次缓存修改、偶尔的缓存访问或调用 Cache.cleanUp() 时,可能会从缓存中删除具有回收键或值的条目;此类条目可能会计入 Cache.size(),但对于读取或写入操作将永远不可见。

某些缓存配置将导致定期维护任务的累积,这些任务将在写入操作期间执行,或者在没有写入的情况下的偶尔读取操作期间执行。返回的缓存的 Cache.cleanUp() 方法也将执行维护,但在高吞吐量缓存的情况下不需要调用它。只有使用removingListener、expireAfterWrite、expireAfterAccess、weakKeys、weakValues 或softValues 构建的缓存才会执行定期维护。

所以 cleanUp 可能会或可能不会做任何事情,并且它可能会或可能不会对被调用有任何好处。但据我所知,LocalCache.cleanUp()方法做了一些事情,但我只是没有遵循什么。从广义上讲,LoadingCache 什么时候应该调用 cleanup()?

.load()注意:我链接到 cleanUp 的 LocalCache 引用,因为当我在 Guava 18 中调用 CacheBuilder 时,我的调试器说会实例化。

具体来说,我的用例是标准数据库支持的加载缓存。我们被要求公开在某些数据库记录更改或被删除并且过期时间不够快的情况下擦除某些缓存的能力。我们采用了快速而肮脏的方法,并允许使用invalidateAll(). 我们cleanUp()以后应该打电话吗?为什么或者为什么不?

0 投票
1 回答
1530 浏览

redis - 当 RAM 已满时,redis 中是否有基于数据库的密钥驱逐策略

我在我的 redis 服务器中使用了 5 个数据库。我想使用 LRU 机制驱逐属于特定数据库的密钥。是否可以 ?

我读到这个:how-to-make-redis-choose-lru-eviction-policy-for-only-some-of-the-keys

但是我所有的数据库都在为他们的条目而活。所以不能使用volatile-lru策略。

我尝试了 volatile-ttl策略,但其他数据库的密钥 ttl 较少。所以他们会被驱逐,这是我不想要的。

0 投票
1 回答
211 浏览

hazelcast - Hazelcast 地图 fifo 驱逐

需要在 hazelcast Map 上设置 FIFO 驱逐策略。这个想法是当堆被 90% 的内存占用时,系统将开始释放最旧的数据。LRU 和 LFU 不起作用,系统也可以在几分钟内填满 90%,而不会被访问。任何想法都会受到欢迎。仅供参考,我们正在使用 java 客户端进行 hazelcast 地图。

0 投票
3 回答
3293 浏览

spring - 为什么我的实体没有从我的二级缓存中逐出?

我正在使用 Hibernate 4.3.11.Final 和 Spring 3.2.11.RELEASE。我对为什么我的缓存驱逐不起作用感到困惑。我在我的 DAO 中设置了这个……</p>

这是我的 Spring 配置……</p>

然而在下面的测试中,我的实体没有从缓存中被驱逐,我知道这是因为“命中计数#3:”的行打印出“3”,而“命中计数#2:”的行打印出“2” ”。

什么是允许我从二级缓存中逐出实体的正确配置?

编辑:我在应用程序上下文中引用的 CacheKeyGenerator 类定义如下

因此,我不必为我喜欢的每个 @Cacheable 注释定义一个“键”(更少的代码)。但是,我不知道这如何适用于 CacheEviction。我认为@CacheEvict 注释将使用相同的密钥生成方案。