问题标签 [ncache]
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.
c# - NCache 作为实体框架二级缓存不与数据库同步
使用 NCache 4.6 作为 EF 6.1.3 二级缓存,SqlDependency 不起作用。(它无法检测到我直接在 SQL Server 中所做的更改。在使用 EF 向数据库添加或删除实体时,它也不会更新缓存或使其无效。尽管它检测到更新实体)
我已经在我的计算机中安装了 NCache,IP:192.168.56.1
和 SQL server 2014 在 vbox 中,IP:192.168.56.101
使用他们网站上的指令并定制它们以满足我的 IP 和用户,我执行了以下 SQL:
另外,select * from sys.dm_qn_subscriptions
显示没有人订阅。
caching - CreateCache.exe卡在NCache缓存软件(开源版)
每次我尝试通过createcache.exe
(使用createcache.exe ClusteredCache
or之类的命令createcache.exe ClusteredCache /s <ip> /t local
)创建新缓存时,程序启动并且不输出任何结果(关于此操作的成功或失败),并且无法以任何方式停止该过程。当我在不同的窗口中输入listcaches.exe
时,新的缓存不会出现,所以我猜它没有被创建。
c# - 带有实体框架 6.1 的 NCache 不能与 NCache API 一起使用
将 NCache 4.6 与 EF 6.1.3 一起使用,无法使其与 NCache API 一起使用。
它在内部使用查询策略efcaching.ncconf
但仅使用api-level-caching
和.Cache()
方法时有效,对缓存无效。
我采取的步骤:
增加Alachisoft.Integrations.EntityFramework.CachingProvider
了对项目的引用。
添加拦截器:
将命名空间添加Alachisoft.NCache.Integrations.EntityFramework.Caching
到文件。
最后,使用他们的EntityDataModel
示例,例如,更改PrintCustomerList(customerQuery);
为PrintCustomerList(customerQuery.Cache());
,但结果没有被缓存。
更新 1:
检查dumpcachekeys.exe
,它实际上已经为我的查询创建了缓存,但它仍然进入数据库以获取结果。
更新 2:
尝试转储现金数据dumpcachedata.exe
失败并出现以下错误:
更新 3
禁用示例实体框架中的动态代理EntityDataModel
,解决了抛出的错误dumpcachedata.exe
,现在现金数据成功转储。但是仍然缓存的查询会导致数据库跳闸。
entity-framework - Memcached 可以用作 Entity Framework 6 的第二层缓存吗?
我有一个用 ASP.NET MVC 5 编写的应用程序。这会生成大量数据库事务。
我没有服务器从服务器专门用于报告,因此我需要在实体框架中使用二级缓存来缓存报告生成的所有查询。
这里的想法是减少必须访问数据库的查询量,尤其是当多个用户试图查看同一个报告时。因此,如果我有 5 个人想要查看仪表板,则只有一个人会访问数据库,其余的人将读取存储在缓存中的数据集。这应该会提高报告性能,减少数据库锁定并提高我的应用程序性能。
是否可以将Memcached或Redis与实体框架一起使用,其中在查询执行一定时间后缓存数据集。当然,在执行查询之前,将在服务器上执行硬查询之前检查缓存中是否存在现有数据集。
我遇到了NCache,这似乎正是我想要完成的,但不幸的是它很昂贵。
c# - 使用分布式缓存进行锁定
我目前正在寻找将我的网站缓存移至 NCache 以允许可用性,但是在我的代码中,有些情况需要锁定以保证数据的正确性。
我读过解决这个问题的一种方法是在数据库级别使用锁定,但这看起来非常复杂。
使用分布式缓存构建自己的锁定系统是否是一个合理的解决方案?或者这是不明智的?
c# - 为 NCache Get 实现 Awaitable Async 方法
我们正在将所有或大部分 .NET 4.6 MVC WebAPI 控制器方法重构为async
方法。
这似乎适用于对可等待方法的较低级别调用的方法,例如 SQL 命令执行;但是,我们正在使用 Alachisoft 的内存分布式缓存框架,称为 NCache(确切地说是 4.6 SP2),它不提供任何真正的异步方法。
是否值得创建一个可以公开等待返回类型的async
辅助方法?Task<object>
传统上使用 NCache API,你Get
从缓存中获取一个对象,Key
在下面的用法中;
建议是创建以下辅助方法;
这样它就可以允许async
方法的完整瀑布流一直到入口控制器方法;
最后是控制器方法;
这会使重构复杂化,因为原始方法实际上具有用于bool success
and的输出参数string message
;但似乎这可以使用Tuple<>
;以体面和快速的方式完成。否则我们可以创建一个返回类型模型。
要正确地做到这一点,将有数百种重构方法;相当的一项事业。
- 这会按预期工作,并且是实现目标的最佳解决方案吗?
- 是否值得付出所有必要的努力,最终目标是提高 Web 服务器的可扩展性和随后的“性能”?
java - java NCache - GeneralFailureException:没有服务器可用于处理请求
我使用 NCache java API 连接到 NCache 服务器,但它引发异常: com.alachisoft.ncache.runtime.exceptions.GeneralFailureException: No server is available to process the request。
我还尝试了该站点 的一些建议,但无法解决问题。这里是java代码。
c# - 缓存键应该被散列吗?
我正在开发一个使用 NCache 的现有系统。它是一个具有大量缓存需求的分布式系统,所以毫无疑问,缓存是正确的答案,但是......
出于某种原因,在现有代码中,所有缓存键在存储到缓存之前都经过哈希处理。
我的论点是我们不应该散列密钥,因为缓存库可能有一些超级优化的方式来存储它的字典和散列所有内容意味着如果我们这样做实际上可能会减慢查找速度。
最初编写代码的人已经离开了,密钥为什么被缓存的知识也丢失了。
任何人都可以建议散列是否是正确的做法,还是应该将其删除。
.net - 具有相同缓存的多个 IIS 网站
我想知道如何为多个 IIS 网站实现缓存。我有不同的应用程序使用我缓存的相同查询。
我制作了一个使用 System.Web.Caching.Cache 的简单缓存服务,但这仅适用于每个网站。
如何为我的所有网站实现相同的缓存?这些都在同一个(虚拟)网络服务器上。
我可以使用 NCache 来解决这个问题吗?
谢谢你的帮助!
解决方案
出于测试目的,我在我的计算机上使用 Memcached 安装了一个 Couchbase 服务器,这似乎工作得很好。现在我只是想知道我可以在我的网络服务器上安装它还是应该为缓存创建一个新的虚拟服务器?