让我们支持用java开发应用程序,并有一个大表。为了提高性能,我们需要缓存数据。这里我们有两种缓存方法:
对象缓存- by id。
集合缓存-缓存ids的集合(!)
集合缓存的示例。我们有一个sql查询SELECT * FROM person WHERE birhddate=A AND age<B ORDER BY firstName,lastName。对于这个查询,我们缓存ids集合。现在,对于相同的查询,我们可以使用缓存。但是,这种缓存的问题是,如果有任何更新/创建/删除所有的集合,缓存就会过时,不能再使用了。
这些都是问题-
在实践中是否使用了集合缓存?
j
我希望这是问这个问题的正确地方,但在最近经历了一些奇怪的行为之后,我在执行之后意识到,当使用.NET内存缓存时,您从缓存中检索对象,而不是在缓存中检索对该对象的引用,因此对对象的任何更新都将在缓存中持续存在。
在下面的示例中,在StudentController中更新学生,并再次检索CourseController,学生包含更新后的值,而不必刷新缓存。
我最初的方法是在更新DB之后清除缓存的学生集合(因为我认为缓存的版本不会包含更新),但是考虑到存在这种持久性,是否有必要在数据库更新后再次填充缓存?
// Student controller
public class Stud
我设置了带有查询缓存的NHibernate (带有和)。在我执行session.Save(new Widget()) (即SQL INSERT)之前,一切都运行得很好。此后,该类型Widget上的所有查询都将未命中查询缓存。对其他实体类型的查询被缓存得很好。
using (ISession session = MySessionFactory.OpenSession())
{
using (var transaction = session.BeginTransaction())
{
// this INSERT screws things up
我对使用umbraco 7.5.2存储在Azure Blob存储中的媒体有问题
blob上带有图像的旧媒体内容无法修改或删除、图像(文件上载)和自定义媒体类型实例本身。这就是错误。
An error occured
The given key was not present in the dictionary.
Exception Details
System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary.
Stacktrace
at System.Coll