我们的项目使用Entity Framework,并且有两种类型的缓存(内存和Redis),没有任何缓存提供程序。由于EF中不支持二级缓存, 我们自己实现了它。因此,我们的内存缓存是一个简单的键值对集合,其中键是缓存的Id,值是缓存的对象。我们还实现了类似的Redis缓存。对于查询,我们查看内存缓存列表,如果不存在,则查看redis,如果仍然不存在,则对数据库进行查询。
由于Entity Framework实体引用上下文,所以我们不能在缓存中使用
我知道缓存是横切关注点,因此我正在寻找更清洁的解决方案。出于这个原因,首先我决定使用Memcached进行内存缓存(而不是使用简单列表)。其次,最重要的是,我可能会从EF迁移到NHibernate以获得它的二级缓存支持。我知道一级缓存被会话对象占用。因此,我想使用Memcached作为二级缓存。但是Redis有第三级缓存吗?
由于Entity Framework实体引用上下文,所以我们不能在缓存中使用
DbContext
的实体,我们需要进行映射。因此,我们需要创建很多DTOs。我知道缓存是横切关注点,因此我正在寻找更清洁的解决方案。出于这个原因,首先我决定使用Memcached进行内存缓存(而不是使用简单列表)。其次,最重要的是,我可能会从EF迁移到NHibernate以获得它的二级缓存支持。我知道一级缓存被会话对象占用。因此,我想使用Memcached作为二级缓存。但是Redis有第三级缓存吗?