问题标签 [second-level-cache]

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 回答
1407 浏览

nhibernate - Nhibernate 和 SetCacheable 与二级缓存

我正在使用 Rhino.Security 存储库来管理我的用户/角色。
创建、删除和关联的过程运行良好,但是当我使用一种方法查询时遇到了问题:GetAssociatedUsersGroupFor。
第一次调用该方法时,我没有为我的用户获取任何组,因为我还没有创建任何关联。在这一点上,我将一个用户与几个组相关联。
我签入数据库,我可以看到关联。
现在我再次调用 GetAssociatedUsersGroupFor 但我无法获得任何组。
使用探查器,我看到这次没有涉及数据库。我检查了代码,发现该函数使用了 Nhibernate SetCacheable:

由于我不想更改 Rhino.Security 代码,我想知道我是否可以以任何方式覆盖或更改此行为。

更新:

我使用此指令来获取关联的组:

我与此代码相关联:

并分离:

更新

我发现我在配置中留下了二级缓存:

我认为拥有二级缓存是一件好事,可以提高性能,但似乎我完全错了。
有没有人可以帮助我了解这里发生了什么?

0 投票
1 回答
3917 浏览

hibernate - 是否可以限制特定实体的 Hibernate 二级缓存的大小?

我有一个启用 Hibernate 二级缓存的场景,我想缓存一个实体,该实体每天创建 1000 个实例并保留 8 年,但查询仅处理最近 2 天。我想避免创建历史表,因为对于历史查找的罕见情况,代码取决于日期。

在 Hibernate 中,使用 Infinispan 作为 Level-2 提供者,是否可以非常具体地配置具有特定属性(驱逐策略、大小等)的特定缓存,Hibernate 应该将其用于实体 Foo?

0 投票
2 回答
488 浏览

asp.net-mvc - Rhino.Security:DetachedCriteria 永远不会命中二级缓存

我已经实现了一个涉及 Rhino.Security 来管理用户/角色/权限的解决方案。
因为我想检查用户是否有权访问控制器操作,所以我实现了一个自定义操作过滤器:

CheckAuthorizationOnOperation调用 Rhino.Security 来检查是否允许用户进行指定的操作:

一切正常,但我注意到当IsAllowed调用的查询被执行时,二级缓存永远不会被命中。
我进行了调查,发现框架(Rhino.Security)使用了DetachedCriteria。这些是两个称为:

如您所见, FindResults使用SetCacheable

每次我刷新页面时,我的操作过滤器都会执行过程并再次执行查询,忽略缓存(二级)。由于我广泛使用缓存并且所有其他调用都正常工作,我想了解为什么这个不能按预期工作。

做一些研究我注意到只有当我调用该函数两次时才使用二级缓存:

似乎这种特殊情况的缓存仅在我使用相同的会话(nHibernate)时才有效。有没有人可以帮助我弄清楚发生了什么?

更新: 在此处输入图像描述

0 投票
1 回答
790 浏览

hibernate - 回滚和二级集合缓存

我有 Hibernate 和 Ehcache 提供的二级缓存。

我有ParentChild类,有Parent.children缓存的集合。

当我执行以下代码时:

最后一行失败并出现异常,尝试加载Child不存在的内容。经过调查,我发现原因是它正在尝试加载Child在上一个事务中创建并回滚的内容。

配置缓存或回滚事务的正确方法是什么,以便正确清除集合缓存?我不想在回滚时清除所有集合缓存,谢谢。寻找一种方法让 Hibernate 或 Ehcache 为我做这件事,影响最小。

0 投票
1 回答
798 浏览

java - 哪个实现是休眠的二级(L2)缓存的默认实现?

我了解 L2 缓存是什么,但我找不到说明默认 L2 缓存实现是什么的文档。

Hibernate 的文档说默认的 impl 是 3.2 版之前的 Ehcache,但他们没有详细说明现在的默认值!

我发现另一个人在 Hibernate 论坛上问同样的问题,但没有人回答他们:https ://forum.hibernate.org/viewtopic.php?p=2438906

提前感谢您的正确答案!

0 投票
2 回答
2721 浏览

hibernate - 设置休眠二级缓存

我是hibernate和spring的新手,我尝试使用hibernate二级缓存。但它似乎不起作用。我有以下测试类:

我有

但我得到这样的输出:

我必须做些什么才能让它工作?

0 投票
1 回答
308 浏览

c# - 选择 nhibernate 二级缓存解决方案时的因素是什么

我在这篇文章中看到,很容易设置 syscache 选项,但我想看看是否有用于二级缓存(memcache、velocity、syscache2、流行等)的其他选项的赞成/反对列表。确定我做出了正确的选择。

0 投票
2 回答
13287 浏览

hibernate - 使用 Hibernate + Spring 进行缓存 - 一些问题

我正在使用 Spring 3 和 Hibernate 3.6 开发 Web 应用程序。目前,我试图了解使用 Spring 和 Hibernate 进行缓存是如何工作的。我找到了一些关于使用 Hibernate 进行缓存的资源和一些关于 Spring 的资源,我现在尝试将我的信息整合在一起。我仍然对这两个框架有一些疑问,如果有人能回答这些问题或告诉我这里列出的事实是否正确,我会很高兴。

大多数时候,简短的回答(是/否)就足够了。我认为这个列表对其他人也很有用,他们想了解 spring 和 hibernate 的缓存是如何工作的。

General

1) Hibernate支持以下缓存:一级缓存、二级缓存、查询缓存

2) Spring 本身支持以下缓存的可能性:只是方法缓存

1st Level Cache

3)一级缓存是每个 Hibernate 应用程序的一部分。

4)为每个休眠会话创建第一级缓存。

5)一级缓存中保存了什么?对象还是仅仅是它们的属性值?查询及其结果?

2nd Level Cache

6)我发现:每个应用程序使用一次二级缓存。那不是假的吗?不是每次使用一次SessionFactory吗?并且:多个 sessionfactorys = 多个二级缓存可能吗?

7)二级缓存中保存的内容:在我看来,只是属于一条记录的值,而不是对象本身。

8)在二级缓存中存储一​​条记录的值时,是否也可以存储相关值(来自通过外键连接的对象)?

9)当更新二级缓存中的一个对象的值时,是否也可以更新缓存中与之相连的对象的值?

10)当对象的值发生变化时,如何更新二级缓存?冲洗?我可以只更新缓存的一部分还是必须更新整个缓存?

11)二级缓存在哪里有意义,在哪里没有意义?

12)缓存模式:每种缓存模式是否提供不同的缓存策略?例如,对于“只读”缓存模式,不需要同步数据库和缓存吗?其他缓存模式是否提供同步?我以为同步必须由开发人员自己完成?

Query Cache

13)查询缓存和二级缓存有什么区别?在我看来:在查询缓存中,结果集被保存,但没有保存它们的值,只是保存了它们的 id。当再次使用查询并且结果集仍然“正确”时,从二级缓存中查询属于ids的值

14)对于查询缓存,必须使用二级缓存吗?

15)查询缓存在哪里有意义,在哪里没有意义?

Spring

16) Spring 是否提供了比方法缓存更多的缓存可能性?

17)方法缓存不链接到休眠缓存

18)但是:对于方法缓存,第二级是必要的,比如 Ehcache(也可以被休眠使用)

19)可以在没有数据库查询的情况下使用方法缓存吗?

Getting mixed up

20)如果将ehcache 用于hibernate 作为二级缓存,将Ehcache 用于spring 用于方法缓存,我可以使用相同的Ehcache 实例吗?有没有可能混淆?

21)当使用一级缓存和二级缓存时,它们会混淆吗?查询数据库时,结果是从哪里来的,一级缓存还是二级缓存?一级缓存可以和二级缓存一起使用吗?

22)还有什么可以通过使用我提到的缓存来混淆的吗?:-)

感谢您的回答,无论什么问题!:-)

0 投票
1 回答
3428 浏览

hibernate - Hibernate 延迟加载和 Hazelcast

我们现在使用 Hazelcast 作为 Hibernate 2 级缓存有一段时间了,但是当使用多个节点时,我们发现存储和读取数据的延迟很长。

我们大量使用组合对象和@OneToMany 关系,为了提高性能,我们决定通过 Hibernate 延迟加载来加载这些组合对象或集合。正如 Hazelcast 文档中所述,我们还实现了 DataSerializable 以加速 Hazelcast 序列化。但是记录 writeData/readData 方法的使用向我们表明,它们实际上并没有被使用!

我们现在还不清楚,如果 Hibernate 代理(通过延迟加载使用)阻止使用 DataSerializable 方法(因为代理本身可能(?)不实现接口)以及 - 更重要的是 - 如果 Hazelcast 支持延迟加载根本 - 以及如何!

0 投票
1 回答
1044 浏览

nhibernate - NHibernate 2nd Level Cache - Membase MemCache - 多会话工厂

我在多租户 NHibernate 应用程序中使用多个数据库,我以前使用 SysCache 工作正常,但是我需要移动到 Memcache,因为我们现在使用的是 Web Farm。我实际上使用的是 Membase 服务器,它很容易在 Windows 上安装并支持 Memcache。

看起来好像我的缓存正在会话工厂之间共享......如果一个实体从 ID 为 1 的数据库 A 中获取,并且应用程序 B 请求相同的实体,它应该从自己的数据库中获取它,而不是从数据库中返回实体A 在缓存中。

是否需要执行任何其他配置才能使其正常工作?

我从这里使用 MembaseCacheProvider(并且配置相同) http://blog.ovesens.net/2011/02/nhibernate-membase-caching-provider/

我在上面的博客上留下了评论,但是我也在这里发帖,以防有人在此期间提供帮助。

保罗