问题标签 [syscache2]
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.
nhibernate - NHibernate 缓存不适用于匿名类型
我正在尝试使以下查询起作用:
这在缓存关闭时有效,但启用缓存后我收到以下异常:
System.InvalidCastException:无法将“Baz”类型的对象转换为“System.Object []”类型。
堆栈跟踪的其余部分是:
任何人都知道这是 NHibernate 限制还是我做错了什么?
sql-server-2005 - NHIbernate SysCache2 和 SQLDependency 问题
我在我的 SQL Server 2008 上设置了 enable_broker 以使用 SQLDepndency
我已将 .Net 应用程序配置为使用带有缓存区域的 Syscache2,如下所示:
我的 Hbm 文件如下所示:
我还为针对 BlogEntry 的查询启用了查询缓存
当我第一次查询时,结果按预期缓存在二级缓存中。
如果我现在去更改 blog_entries 中的一行,一切都会按预期工作,缓存已过期,它会收到以下消息:
我希望如此。在下一页请求中,查询及其结果将存储回缓存中。但是,即使没有进一步更改,缓存也会立即再次失效。
我的缓存每次后续都会不断失效,而基础数据没有变化。只有重新启动应用程序才允许缓存再次运行 - 但只有第一次缓存数据时(同样,缓存的第一次变脏,导致它不再工作)
有没有人看到这个问题或知道这可能是什么?我在想 syscache2 需要处理它可能正在执行的 SQLDependency onChange 事件 - 所以我不明白为什么 SQL Server 不断发送 SQLDependency depedencyChanged。
谢谢
nhibernate - 如何清除NHibernate中的整个二级缓存
我希望通过代码清除 NHibernate 中的整个二级缓存。有没有一种独立于所使用的缓存提供程序的方法?(我们有客户在同一个应用程序中同时使用 memcache 和 syscache)。
我们希望清除整个缓存,因为可能发生了数据库外部的更改(并且我们无法保证:哪些表/实体受到影响,因此我们必须假设最坏的情况)。
c# - 如何在 fluent nhibernate 和 syscache2 中配置缓存区域
我一直在尝试使用流利的 nhibernate 实现缓存区域,到目前为止我已经完成了以下工作:
1) 在 Fluently.Configure() 中设置缓存:
2) 更改了我的 ClassMap 以启用缓存,并设置选择区域:
希望我已经正确地完成了上述操作,但我真的不知道在哪里配置每个区域的优先级和缓存持续时间。你知道怎么做吗?如果您碰巧在上述代码中发现缺陷,我将非常感谢您的反馈。
asp.net-mvc - 在多服务器环境中使用 Syscache 作为 nhibernate 2 级缓存是否有任何问题?
我刚刚从单个 Web 服务器环境迁移到多 Web 服务器环境,过去我一直在使用 nhibernate 和 syscache 二级缓存。
我知道我需要迁移到分布式 nhibernate 二级缓存解决方案(memcache、velocity 等)但是(出于多种原因),它需要一些时间来完成迁移。
我目前的状态(目前在多网络服务器环境中使用 Syscache 2 级缓存)有什么特别需要担心的,还是它不会像分布式解决方案那样高性能(假设我基本上会有每个网络服务器上的本地并行缓存与跨服务器的集中式缓存)。
我基本上是想弄清楚这个设置是否有任何问题,或者它没有尽可能快。
sql-server-2008 - NHibernate + SysCache2 + SqlCacheDependency - 缓存在应用程序中没有失效
我有一个基本的 MVC 应用程序,它使用 NHibernate 进行 OR/M 和数据访问,SysCache2 用于 NHibernate 中的二级缓存,SqlCacheDependency 用于底层缓存失效逻辑。我相信我已经正确设置了所有内容(如果需要,我可以添加详细信息)并且我可以看到项目正在缓存在应用程序端。
但是,如果我直接更新数据库表中的项目,则不会通过 SqlCacheDependency 和 NHibernate 中的 SysCache2 将更新发送回应用程序。因此,数据库中的数据正在更新,并且与应用程序缓存中的数据不同(在 NHibernate 和 SysCache2 中)。
我可以在 [AspNet_SqlCacheTablesForChangeNotification] 表中看到与正确域表递增相关的 [changeId] 列的值,因此我相当确定 SQL 服务代理已正确设置和配置。如果我使用 SQL Profiler 分析数据库,我可以看到队列、服务和存储过程的设置调用以及用于监视的 BEGIN CONVERSATION 调用。
不太确定接下来要检查什么。以前有没有人遇到过这个问题,解决方案是什么?
model-view-controller - MVC 应用上的 SysCache2 和 FluentNhibernate
我的 MVC 应用程序上的 SysCache/SysCache2 有问题。我的配置似乎是正确的。我已经像网络上无数的例子一样设置了它。
在我的课堂上,我已经提出: Cache.Region("LongTerm").NonStrictReadWrite().IncludeAll();
这是我为应用程序缓存所做的测试。
正如我在会话工厂统计信息中看到的那样,第一条语句被缓存(例如 230 条记录)。如果我理解正确,下面的第二条语句不应该命中数据库,而是缓存。这里的问题是它无论如何都会进入数据库。用探查器检查以 100% 确定。
我不知道我在这里做错了什么。有人有想法吗?
.net - 如何使 NHibernate 缓存获取子集合?
我有一个相当简单的标准查询来获取子集合,如下所示:
使用 NH Prof,我已经验证了这只需使用冷缓存来一次往返数据库(如预期的那样);但是,在连续执行时,它仅从Order
缓存中检索 ,然后为图中的每个子实体使用 SELECT(N+1) 访问数据库,如下所示:
等等等等。显然,它没有缓存整个查询或图形,只缓存根实体。第一个“缓存查询”行实际上具有join
它应该具有的所有条件 - 它肯定是正确地缓存查询本身,而不是实体,显然。
我已经尝试过使用 SysCache、SysCache2 甚至 HashTable 缓存提供程序,但我似乎总是得到同样的行为(NH 版本 3.2.0)。
谷歌搜索发现了许多古老的问题,例如:
- NH-195:子集合未存储在二级缓存中
- Syscache2 二级缓存:Child coll. 请求的对象
- SysCache 和 SysCache2 之间的奇怪差异
- NHibernate——提防不明智的缓存策略(Ayende——当然他只是懒得提什么不该做,而不是如何修复它……)
但是,这些似乎都是很久以前修复的,无论我使用哪个提供程序,我都会遇到同样的不良行为。
我已经阅读了关于 SysCache 和 SysCache2 的 nhibernate.info 文档,似乎没有任何我遗漏的东西。我已经尝试为查询中涉及的所有表添加cacheRegion
行到Web.config
文件中,但它不会改变任何东西(并且AFAIK这些元素只是为了使缓存无效,所以它们无论如何都不重要)。
由于所有这些似乎都已修复/解决的超级老问题,我认为这不可能仍然是 NHibernate 中的错误,它一定是我做错了。但是什么?
将 NHibernate 中的 fetch 指令与二级缓存相结合时,我需要做些什么特别的事情吗?我在这里想念什么?
nhibernate - Fluent NHibernate Syscache2 缓存过期
我一直在研究使用 fluent 和 syscache2 的 WCF 服务。关于我目前的困境,我几乎阅读了所有关于 SO 的文章;我没有运气。
我正在尝试为我的二级缓存设置过期时间。我设置的任何值似乎都被忽略了,默认值 5 分钟用于使缓存过期。
流畅的配置:
注意: contextClass 只是一个描述符类,保存传递给配置的值。
我还将 app.config 文件设置如下:
app.config 有一个变体,它有一个使用区域的 syscache 部分,但也不起作用。
有人对想法有什么建议吗?
谢谢
nhibernate - 我可以将 NHibernate SysCache 与非 Web 应用程序一起使用吗?
我有一个使用 NHibernate (3) 和 SQL Server 2008 的 Windows 服务。WPF 客户端通过 WCF 连接到该服务以使用 DataAccess。我现在的问题是:我可以在这个场景中使用 SysCache 或 SysCache2 - 还是它们只能在 Web-/ASP.NET-Applications 中使用?