首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >NHibernate的三级缓存

NHibernate的三级缓存
EN

Stack Overflow用户
提问于 2015-11-12 22:09:54
回答 1查看 519关注 0票数 10

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

因为entity框架实体引用了context,所以我们不能在缓存中使用DbContext的entity,我们需要映射它。所以我们需要创建大量的DTO。

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

EN

回答 1

Stack Overflow用户

发布于 2015-11-17 10:55:44

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33673392

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档