Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.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_.net_Memcached_Theory - Fatal编程技术网

Java 使用分页/过滤数据的缓存策略

Java 使用分页/过滤数据的缓存策略,java,.net,memcached,theory,Java,.net,Memcached,Theory,我目前正在考虑缓存策略,更重要的是避免缓存中的数据重复。我的查询与语言无关,但与编程密切相关 我的问题是关于分页或过滤数据的高效缓存,但不仅仅是分布式缓存。对于后者,我决定使用memcached,更确切地说是它的.NET端口。我已经看到了另一种商业选择的形式NCache,但memcached似乎完全可以接受我,显然是用于facebook,myspace等 然后,我的查询是一种策略,您可以在缓存中包含对象,还可以使用分页数据引用它们。如果我有100个项目,我页他们,然后我可以缓存产品1-10的ID

我目前正在考虑缓存策略,更重要的是避免缓存中的数据重复。我的查询与语言无关,但与编程密切相关

我的问题是关于分页或过滤数据的高效缓存,但不仅仅是分布式缓存。对于后者,我决定使用memcached,更确切地说是它的.NET端口。我已经看到了另一种商业选择的形式NCache,但memcached似乎完全可以接受我,显然是用于facebook,myspace等

然后,我的查询是一种策略,您可以在缓存中包含对象,还可以使用分页数据引用它们。如果我有100个项目,我页他们,然后我可以缓存产品1-10的ID在缓存和缓存每个产品分开。如果我从何处对项目进行降序排序,那么项目1-10将是不同的产品,因此我不希望在每次页面数据/排序/筛选更改时存储实际对象,而是存储对象的ID,以便在缓存中不存在某些对象或这些对象无效时,可以在数据库中执行随机查找

我最初的想法是使用缓存密钥

paged_<pageNumber><pageSize><sort><sortDirection>[<filter>]
paged_u[]
然后,我将遍历缓存键并删除任何以“paged_”开头的键。我的最终问题是,是否有人知道有关缓存此类数据模式(如分页数据)的层的任何模式或想法,并确保对象不会缓存多次

memcached是本机代码,以我上面所述的方式清除缓存不会有问题,但一个明显的事实是,缓存中的项目越多,所需的时间就越长。我感兴趣的是,如果有人知道目前正在使用的这类问题的任何解决方案或理论。我相信会有。谢谢你抽出时间

短暂性脑缺血发作


Andrew

我曾经尝试过一种类似的缓存策略,但我认为它很难使用。我最终只是缓存组成页面的对象,并为每个请求生成页面。构建一个页面的10次缓存命中将(希望)是亚秒响应时间,对服务的用户来说几乎是即时的


如果必须缓存整个页面(我认为它们是结果集),那么也许可以通过散列运行用户请求,并将其用作缓存密钥。用一个具体的例子或代码(至少对我来说)进行可视化是一个困难的问题。

我曾经尝试过一种类似的缓存策略,但我认为它很难实现。我最终只是缓存组成页面的对象,并为每个请求生成页面。构建一个页面的10次缓存命中将(希望)是亚秒响应时间,对服务的用户来说几乎是即时的


如果必须缓存整个页面(我认为它们是结果集),那么也许可以通过散列运行用户请求,并将其用作缓存密钥。用一个具体的例子或代码(至少对我来说)进行可视化是一个困难的问题。

页面是动态的,每页上的数据是不断变化的还是基于用户查询的?应用程序是否已经写入并且速度太慢,因此需要使用缓存?“过早优化是万恶之源”数据在预先定义的选项集上更改,而不是缓存在用户查询上。正在创建应用程序。这不是过早的优化,只是规划,因为“规划失败就是规划失败;-)”规划很好,但我会编写应用程序(将缓存放在脑后),然后对其进行测试。如果不够快,可以通过SpringAOP之类的方式添加一些缓存,而不是将缓存逻辑嵌入到应用程序代码中。这也会使问题更容易回答,因为我们可以看到一些实际的代码[或用例],并建议缓存最有益的地方。我喜欢你提出的观点,但仅此而已,是我看到了一个途径,我知道我想添加一个缓存策略,其中可能包括分页选项,同时保持对象存储中的唯一性。页面是动态的,每个页面上的数据是不断变化的还是基于用户查询的?应用程序是否已经写入并且速度太慢,因此需要使用缓存?“过早优化是万恶之源”数据在预先定义的选项集上更改,而不是缓存在用户查询上。正在创建应用程序。这不是过早的优化,只是规划,因为“规划失败就是规划失败;-)”规划很好,但我会编写应用程序(将缓存放在脑后),然后对其进行测试。如果不够快,可以通过SpringAOP之类的方式添加一些缓存,而不是将缓存逻辑嵌入到应用程序代码中。这也会使问题更容易回答,因为我们可以看到一些实际的代码[或用例],并建议缓存最有益的地方。我喜欢你提出的观点,但仅此而已,我看到了一个途径,我知道我想添加一个缓存策略,其中可以包括分页选项,同时保持存储对象的唯一性