entity-framework - NHibernate 的三级缓存

标签 entity-framework hibernate caching nhibernate redis

我们的项目使用 Entity Framework 并有 2 种类型的缓存(内存中,Redis),没有任何缓存提供程序。由于lack of second-level cache support in EF我们自己实现了。所以我们的内存缓存是一组简单的键值对,其中键是缓存的 Id,值是缓存的对象。我们也实现了类似的缓存来使用 Redis。对于查询,我们查看内存缓存列表,如果不存在,我们查看 Redis,如果不存在,我们查询数据库。

因为 Entity Framework 实体引用了上下文,我们不能在缓存中使用 DbContext 的实体,我们需要映射它。所以我们需要创建很多 DTO。

我知道缓存是cross-cutting concern所以我寻找更清洁的解决方案。出于这个原因,首先我决定使用 Memcached用于内存中(而不是使用简单列表)。作为第二个也是最重要的,我可能会从 EF 迁移到 NHibernate 以获得其对 Second-Cache 的支持。我知道 first level cache is occupied by session object .所以想用Memcached做二级缓存。但是Redis有没有三级缓存呢?

最佳答案

在不创建大量 DTO 的情况下实现二级缓存的一种方法是在键值列表中使用属性名称值列表,而不是存储 DTO。 据我了解,NHibernate 中没有三级缓存。一种方法是实现自定义缓存提供程序,它可以首先查看 Redis,如果找不到,则从 Memcached 获取值。

关于entity-framework - NHibernate 的三级缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33673392/

相关文章:

entity-framework - 使用 Join 获取更新的 Table Linq Entity Framework

database - 在不重新启动服务器的情况下使 django 的设置缓存无效?

Mysql通过缓冲降低CPU使用率

css - 如何缓存wordpress主题图片?

performance - 是否可以查看/优化 Hibernate 查询计划?

java - 我可以使用 Spring 将使用 @Entity 注解的模型类实例注入(inject)到 Controller 中吗?

c# - Entity Framework 5 性能不佳

c# - 如何在 Entity Framework 中使用 String 属性作为主键

c# - 网站 | Entity Framework ,竞争条件

java - EJBQL - 查找具有超过 'x' 关系的所有行