Java 根据使用情况清除缓存
我正在调用web服务来填充缓存 可以发送到服务器的请求数有一个限制-每小时15个请求 我希望为调用Web服务最多的用户最小化缓存的陈旧性 以下三个用户访问此服务:Java 根据使用情况清除缓存,java,algorithm,caching,optimization,ehcache,Java,Algorithm,Caching,Optimization,Ehcache,我正在调用web服务来填充缓存 可以发送到服务器的请求数有一个限制-每小时15个请求 我希望为调用Web服务最多的用户最小化缓存的陈旧性 以下三个用户访问此服务: user1 - 10 requests per hour user2 - 5 requests per hour user3 - 20 requests per hour user1 - 29% of requests user2 - 14% of requests user3 - 57% of requests 基于此,我计划运
user1 - 10 requests per hour
user2 - 5 requests per hour
user3 - 20 requests per hour
user1 - 29% of requests
user2 - 14% of requests
user3 - 57% of requests
基于此,我计划运行一个计划任务来清除
对于访问服务的次数百分比较高的用户(如user3),缓存用户的频率更高
除了我所采用的方法或现有的算法之外,还有其他方法吗?也许我可以利用现有的框架?您使用的是memcache还是ehcache?您可以创建特定于用户的密钥,并将这些密钥的过期时间设置为尽可能短的时间,对吗?您的代码是否会阻止用户并在返回数据之前等待缓存更新?或者,它会一直服务于用户的请求,即使这意味着返回旧数据?如果保持缓存更新没有太大成本,那么让您的计划任务每小时更新缓存15次即可。这样,任何用户都不会获得超过四分钟的数据。@Jim Mischel它将始终为请求提供服务,因此可能会返回旧数据。这就是我想要优化的,对于经常访问数据的用户,缓存将被刷新得更多frequently@javadev使用ehcache。到期时间需要在运行时设置,因为此参数将更改,我认为不能在运行时设置到期时间,因此需要在特定时间点清除到期时间。我想我误解了。您是说每个用户都有自己的数据缓存,这些数据由web服务保存?你有一些中央交通警察控制对那个网络服务的呼叫吗?我认为您需要更具体地说明应用程序的结构。