问题标签 [session-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 投票
3 回答
893 浏览

java - 如何在 Hibernate 中使用 mappedBy 更新集合类型关系?

我有两个相关的实体,比如说

如果我取一个空书架(没有书),创建一本新书并将其持久保存到书架上,然后再次获取该书架,它的藏书是空的。当我使用调试日志运行它时,我看到 Hibernate 没有第二次搜索书架,它只是从会话缓存中返回它,它不知道它的书籍集合已更新。

我怎样才能摆脱效果并获得货架的更新状态?

谢谢,
阿尔特姆。

0 投票
3 回答
4449 浏览

hibernate - 如何仅在会话级别启用休眠查询缓存?

如果我有一个在单个线程中被多次调用的查询,而我只想为该线程(或该会话,因为我每个线程使用一个会话)缓存该查询(及其结果),怎么办?我这样做?

注意:我的二级缓存已打开,但主要用于 session.get(...)。但我不想将它用于我的查询缓存,因为我只需要它在我的线程( / session )期间存在。

谢谢

0 投票
3 回答
580 浏览

c# - NHibernate 基于父类 ID 缓存对象

我对 Animal 和 Dog 类型有以下定义。请注意,对象的 ID 是 AnimalID:

假设我的数据库中有以下信息:

首先,我查询 OwnerID = 1 的 Dog。在同一个会话中,我查询 OwnerID = 2 的 Dog。由于 NHibernate 的 Session 缓存,第二个查询返回了 OwnerID = 1 且 IsStrong = True 的 Dog 对象,其中它应该返回一个 Dog 对象,其中 OwnerID = 2 且 IsStrong = False。

NHibernate 自动通过 ID(主键)列缓存对象,因此第二次请求 Dog 最终会检索到具有相同键的对象。我可以通过在对象上调用 ISession.Evict() 来解决这个问题,但这似乎是一个 hack。

有更好的建议吗?

0 投票
3 回答
6644 浏览

hibernate - 休眠查询缓存 - 对于不在二级缓存中的对象 - 有风险吗?有用?不好的做法?

与这个问题有关

前提:

这些是我的假设,基于我的阅读、经验和理解,它们可能是错误的,如果是,请发表评论,我将编辑问题。

  • 查询缓存主要与二级缓存一起使用
  • 查询缓存缓存查询+参数的标识符结果
  • 如果数据库被更改并且它没有反映到缓存中,查询缓存是有风险的

问题:

我有一个不在二级缓存中的对象。由于一些糟糕的编程或其他限制,加载对象的代码在同一个休眠会话中被多次调用。检索使用 HQL 查找查询,例如

在添加查询缓存之前,如果上面的代码在同一个Hibernate Session中被调用N次,那么数据库有N次命中

然后我想看看如果我添加查询缓存会发生什么:

当我添加查询缓存时,我注意到在同一个会话期间,休眠不再访问数据库 N 次,每个会话只有一次。

  1. 所以我的第一个假设是 Hibernate 首先在 Session Cache 中搜索,然后在 2nd Level Cache 中搜索。这个假设正确吗?
  2. 我还假设如果Foo不在二级缓存中的对象 () 在数据库中被更改,那么跨会话范围的查询缓存将返回错误的标识符,从而返回错误的对象。那是对的吗?
  3. 是否可以肯定地说,即使对于非 2L 缓存对象,对包含不可变信息的查询使用查询缓存是一种好习惯?(例如一个查询,它的 where 子句包含一个总是返回相同结果的条件,例如“select p.ser_num where p.id = ?” 当 ser_num 和 id 对一旦创建就不会改变)

顺便说一句,在相关问题中声称查询缓存不适用于会话缓存范围。我是否误解了该声明或其他任何内容?

0 投票
1 回答
225 浏览

asp.net - ASP.NET 应用程序/会话缓存是否强制应用程序重新启动?

我希望这更像是一个讨论而不是任何事情。

所以我有一个网站 www.utopiapimp.com。现在它每天的页面浏览量超过 100 万。这个网站上有大量的动态数据总是在变化。想想“实时股票行情”,但对于在线网页游戏。我遇到了一个很深的障碍。

当 Web 应用程序启动时,我从 db 加载了一些静态项目,但之后每次用户登录时,我都会为该用户发出 15 个 db 调用,并将整个对象从这 15 个 db 调用中填充到缓存中。在我的服务器监视器上,我可以看到我的 4 gb 内存慢慢地英寸到只有 2 gb。然后发生了一些事情,我不知道是什么。

1 核 CPU VPS 开始永远处于 25%。有时处理峰值会超过 50%。但是大约 20 分钟后,2gbs 或 ram 突然下降到大约 400mgs 永远不会恢复。

我可以一遍又一遍地重复这个。我不知道是什么原因造成的,但我细致的一面仔细扫描了网站和代码,并没有发现真正的挂断。我开始想也许我访问缓存并在缓存中存储了太多东西,但我真的没有得出结论。

因此,在听到这种情况后,任何人都可以建议我可能遗漏的东西吗?也许应用程序崩溃了?并且它很难重新启动它收到的点击量并且一直在崩溃?

我很挂断这个问题,似乎找不到解决方案。

也许升级到更好的 vps 可能会奏效,但我不想升级几乎在那里发现同样的问题。

任何帮助公关建议都会很棒,因为过去一周我一直在为此苦苦挣扎,而我的用户确实在苦苦寻找解决方案。

编辑

我已经联系了我的托管公司并等待回复。任何其他建议或想法将不胜感激......

非常感谢!

0 投票
1 回答
3877 浏览

database - Hibernate HQL 只命中会话缓存

我在理解HQL查询从哪里获取信息时遇到了一些麻烦。我的项目使用不同的线程,每个线程读取/写入数据库。线程不共享 Session 对象,而是使用一个HibernateUtil为我创建会话的类。

直到最近,我只会在写作后关闭会话,而不是在阅读后。对对象的更改将立即在数据库中看到,但是在其他线程上读取时(与用于写入的会话对象不同)我会得到陈旧的信息。读取和写入总是发生在不同的线程上,这意味着不同的会话对象和不同的会话缓存。

我一直认为通过使用HQL而不是Criteria,我将始终以数据库(或二级缓存)而不是会话缓存为目标,但是在调试我的代码时,我很清楚 HQL 正在会话缓存中寻找对象并检索了一个旧的过时对象。

假设HQL总是以数据库为目标,我错了吗?或者至少是二级缓存?

PS:我只使用一个SessionFactory对象。

0 投票
1 回答
322 浏览

asp.net-mvc-3 - ASP.NET MVC Web 应用程序,由 GoDaddy 托管,对身份验证进行疯狂操作

我有我开发的这个网站。它表现得很奇怪。我登录了它,现在似乎我无法注销它。它有会话,我不知道它在注销后以及在不同的浏览器中甚至在隐身后仍然可以保持。

最奇怪的是,如果你在浏览器中打开它,你会得到相同的会话状态。你不能用它做任何事情。但它就在那里。

到底是怎么回事?

转到此页面,它显示一些用户已登录。单击添加并再次要求提供凭据。就像一个无限循环。

http://krninstitute.com/krnitech/Forms

然后转到此页面,它显示其他用户已登录。转到页面末尾。

http://krninstitute.com/krnitech/Gallery

这个问题需要这些外部链接。

但这里有一些图片以防万一:

隐身窗口中的 cookie 没有记录

在此处输入图像描述

在此处输入图像描述

编辑1:

是什么导致每个请求都以会话 cookie 结束?我没有实现任何缓存。这与最近的 GoDaddy 崩溃有关吗?

编辑2:

问题是 1.你怎么能看到谁在应用程序上登录?我还没有实现这样的功能。2.如何有两个人从同一个浏览器窗口登录?

0 投票
1 回答
398 浏览

distributed-caching - 如何在 apache karaf 容器之间进行 HTTP 会话复制?

有人知道在分布式 apache karaf OSGi 容器中运行的 Web 应用程序之间进行 http 会话复制的方法吗?

在这篇文章中,http ://karaf.922171.n3.nabble.com/Pax-web-failover-LoadBalancing-td4029552.html,Jean-Baptiste Onofré 说它在 apache 地窖中还没有。这种能力在任何地方都可用吗?

我整天都在谷歌搜索,但没有找到任何选择——感谢您的帮助。

史蒂夫

0 投票
7 回答
17177 浏览

python - 寻找“属性'_session_cache'”的Django项目

所以我有一个不使用数据库的 Django 项目('DATABASES' 设置被注释掉了)。我选择使用 Django,因为将来我可能需要数据库功能。无论如何,我已经在这个项目上工作了几个月,没有任何问题。我正在运行 Linux Mint,并且在使用python manage.py runserver到目前为止使用该命令没有遇到任何问题。

好吧,今天我启动了应用程序并毫无问题地启动了本地服务器。然后我尝试在浏览器中打开该应用程序并收到相当可怕的错误消息:

自从我上次使用该应用程序以来,我还没有碰过它,那时它运行良好。我真的不知道这是在说什么,因为我没有实现缓存,也没有使用数据库……我问过一些熟悉 Django 的大学,也不知道这是什么。有任何想法吗?我还尝试根据在线帖子的建议将 DATABASES 设置为空 dict {},但没有效果。有点吃亏。

编辑:我想我应该提一下,自从我上次接触这个项目以来,我已经开始并建立了一个使用数据库的新 Django 项目。这个项目是否有可能以某种方式被缓存并破坏了我目前正在尝试的项目?

EDIT2:我应该指出,这个 webapp 目前在http://mrcagney-maps.com上运行和工作。代码完全一样(自从我上次推送到服务器后就没有碰过它)。真的很奇怪。

0 投票
1 回答
810 浏览

caching - 什么是存储用户会话 openldap 或 redis 的理想场所

我正在使用 openLDAP 存储用户。我应该在哪里保留用户会话详细信息,因为我们需要跟踪会话的少量用户详细信息。存储用户会话的理想位置是什么?

谢谢...