Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 根据使用情况清除缓存_Java_Algorithm_Caching_Optimization_Ehcache - Fatal编程技术网

Java 根据使用情况清除缓存

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 基于此,我计划运

我正在调用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
基于此,我计划运行一个计划任务来清除 对于访问服务的次数百分比较高的用户(如user3),缓存用户的频率更高


除了我所采用的方法或现有的算法之外,还有其他方法吗?也许我可以利用现有的框架?

您使用的是memcache还是ehcache?您可以创建特定于用户的密钥,并将这些密钥的过期时间设置为尽可能短的时间,对吗?您的代码是否会阻止用户并在返回数据之前等待缓存更新?或者,它会一直服务于用户的请求,即使这意味着返回旧数据?如果保持缓存更新没有太大成本,那么让您的计划任务每小时更新缓存15次即可。这样,任何用户都不会获得超过四分钟的数据。@Jim Mischel它将始终为请求提供服务,因此可能会返回旧数据。这就是我想要优化的,对于经常访问数据的用户,缓存将被刷新得更多frequently@javadev使用ehcache。到期时间需要在运行时设置,因为此参数将更改,我认为不能在运行时设置到期时间,因此需要在特定时间点清除到期时间。我想我误解了。您是说每个用户都有自己的数据缓存,这些数据由web服务保存?你有一些中央交通警察控制对那个网络服务的呼叫吗?我认为您需要更具体地说明应用程序的结构。