缓存位置:使用SessionScoped托管bean的数据库缓存或App服务器?

时间:2011-03-31 19:33:38

标签: java session caching jsf

我正在使用 Casssandra DB &带有 JSF 2.0 的Java。

Cassandra有自己的缓存层,我也可以使用JSF中的SessionsScoped托管bean进行缓存。我想知道什么是实现不同类型数据缓存的好方法:待缓存数据有时相当大1种,有时它是小尺寸(第2种)。

由于Cassandra行中的缓存数据列将以序列化格式存储数据&对于整个列结构,我想我会更好地将它们存储在会话作用域bean中的app服务器上,从而我可以更好地控制缓存数据&缓存数据可能是最相关的,我想在两种情况下硬件要求没有区别: - (1)当我使用sessioncoped bean(2)实现它时,如果我使用数据库缓存。

请列出这两种缓存实施可能带来的好处的差异。

1 个答案:

答案 0 :(得分:2)

不要(ab)将会话范围用作大型数据集的缓存。您基本上是为每个访问者复制缓存。你应该有一个缓存。数据库缓存非常好。

关于数据的大小,您应该有效地拥有一个请求或视图范围的bean,其中包含完全最终用户在特定请求中需要知道的数据。例如。当您通过每页10个对象的分页显示1000个对象的数据集时,请求范围的bean应该包含这10个对象,并且应该将剩余部分保存在DB / DB缓存中。代码也应该以这样的方式编写,即它正好检索那10个对象(因此不会检索1000个对象,然后过滤掉所需的10个对象)。