问题标签 [cachemanager]
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.
scala - 使用 Play 缓存 (Scala) 对模块进行单元测试
寻找在 Scala 中使用 Play 缓存对模块进行单元测试的一些指导。我有一个查询数据库、获取静态数据并存储在 Play 缓存中的方法。在编写单元测试时,显示以下错误:
自定义提供程序出错,java.lang.IllegalStateException:CacheManager 已关闭。它不能再使用了。
我在我的 scala 单元测试中没有任何拆解来显示此错误。关于为什么会发生这种情况的任何建议都会很棒。
此外,任何解决此问题的建议都会让人大开眼界。我能想到的一种可能方法是使用附加参数并根据测试/非测试工作流程的参数值启用/禁用缓存。但这是唯一的方法。我应该只为我的测试传递我的缓存的自定义实现吗?
azure - 如何在 Azure 中为 CacheManager 选择 Redis databaseId?
我在 Azure 中有一个 .NET 应用程序,它通过CacheManager使用 Redis 作为缓存。应用程序使用部署槽。我想为不同的插槽使用不同的 Redis 数据库 ID。Test/Staging/Prod 插槽使用 Redis databaseId 0/1/2。
是否可以在 CacheManager 中以编程方式设置 databaseId,同时将其余配置(IP、端口、ssl、密钥等)保留在 web.config 文件中?只有数据库编号有所不同,它存储在 Azure appSetting 中的每个插槽。
c# - 我应该在 ICacheManager 中缓存 json、Bson 或 JObject 吗?
我有一些需要缓存的 JObject,我想知道在CacheManager中缓存此类数据时的最佳做法是什么?
我很担心
- 在缓存中使用相当少量的内存。
- 不要不必要地序列化以避免无用的处理。
如果我缓存 json string
,我每次读取缓存时都需要解析它。
如果我缓存JObject
我不知道它将如何被序列化到缓存中。可能是一个非紧凑的二进制数组。但是在检索到它之后,我不必对它做任何事情。
这就是为什么我正在考虑它可能会Bson
更好地序列化,或者这可能会简单地添加另一层序列化?毕竟,我必须在读取缓存时将其转换为Bson
,JObject
就像我要缓存 json 一样string
。
azure - 重新启动后连接到 Redis 缓存失败 - Azure
我们使用以下代码连接到我们的缓存(内存和 Redis):
settings
.WithSystemRuntimeCacheHandle()
.WithExpiration(CacheManager.Core.ExpirationMode.Absolute, defaultExpiryTime)
.And
.WithRedisConfiguration(CacheManagerRedisConfigurationKey, connectionString)
.WithMaxRetries(3)
.WithRetryTimeout(100)
.WithJsonSerializer()
.WithRedisBackplane(CacheManagerRedisConfigurationKey)
.WithRedisCacheHandle(CacheManagerRedisConfigurationKey, true)
.WithExpiration(CacheManager.Core.ExpirationMode.Absolute, defaultExpiryTime);
它工作正常,但有时机器会重新启动(由我们托管它的 Azure 自动重新启动)并且在重新启动后与 Redis 的连接失败,并出现以下异常:
Connection to '{connection string}' failed.
at CacheManager.Core.BaseCacheManager`1..ctor(String name, ICacheManagerConfiguration configuration)
at CacheManager.Core.BaseCacheManager`1..ctor(ICacheManagerConfiguration configuration)
at CacheManager.Core.CacheFactory.Build[TCacheValue](String cacheName, Action`1 settings)
at CacheManager.Core.CacheFactory.Build(Action`1 settings)
根据 Redis 常见问题解答(https://docs.microsoft.com/en-us/azure/redis-cache/cache-faq)部分:“为什么我的客户端与缓存断开连接?” 重新部署后可能会发生。
问题是
- 重新部署后是否有任何机制可以恢复连接
- 我们初始化连接的方式有什么问题吗
我们确定连接字符串没问题
stackexchange.redis - CacheManager.NET SCRIPT 执行似乎不遵守 StackExchange Redis 的 SyncTimeout
在应用服务器负载较重的情况下,使用 CacheManager.NET 和 Redis 作为后端时,偶尔会出现以下错误,
尽管我们在 ConnectionMultiplexer 中将 SyncTimeout 设置为 10000(10 秒),将 ConnectTimeout 设置为 5 秒,但系统会卡住大约 50 到 60 分钟(有时甚至更长)。请注意,仅在执行缓存管理器在初始化时执行的 SCRIPT 命令时才会出现此问题。
堆栈跟踪是:
我浏览了 StackExchange Redis 的 Timeout 文档,可以理解由于客户端计算机上的 CPU 使用率非常高,一些连接可能会遇到此类问题。
然而,我们最大的担忧是它应该在 10 秒内超时,并且不应该停留几分钟/几小时。
你能在这里指导我们吗?
android - CacheManager OSMDroid 中的 RoadOverlay
目前我主要在离线模式下开发 OSMDroid 地图。一切都很好,除了我试图使用 RoadManager 离线缓存路线。路线可以在线显示,但离线显示为直线,而不是在线时的路线。下面是道路管理器的代码,除了离线可以看到路线cn。如果你们中的任何人提供帮助,对我来说将是莫大的荣幸
RoadManager 代码
我想在缓存管理器中实现的代码
CacheManager 但仅适用于地理点,无法将路点设置为参数
c# - 如何使用 CacheManager 设置 Redis Server 池大小?
[C#] 如何使用 CacheManager 设置 Redis Server 池大小?
我收到高并发错误:没有可用于服务此操作的连接:HMGET,如何设置连接池大小?
========================
java - Spring Boot中调用getCache不退出时如何动态创建缓存?
我创建了一个使用 jcache 的 spring boot 项目,配置如下:
我想动态创建缓存,我的代码是这样的:
但是当缓存注释退出时我无法获取缓存,我想动态创建缓存。
c# - CacheManager - 每 x 分钟或到期时刷新缓存
使用CacheManager,您将如何最好地实现这个场景,其中缓存实例包含数据,可能需要很长时间才能从慢速源获取?
我从不希望用户等待缓存填充(我不关心第一次加载)
我可以想到两种方法,但不确定是否可以使用 CacheManager:
“预定”刷新
- 将缓存实例设置为 60 分钟后过期
- 每 15 分钟,安排一些东西来刷新缓存实例
到期刷新
- 当缓存实例过期时,触发一个刷新数据的事件。在数据刷新时(或者如果刷新失败),缓存实例仍然返回“陈旧”数据。
Cachemanager 在技术上是可行的,哪种方法最有效——如果有的话?
c# - CacheManager/Couchbase 配置导致临时端口耗尽
使用...
- CacheManager.Core v1.1.2
- CacheManager.Couchbase v1.1.2
- CouchbaseNetClient v2.5.4
- Couchbase 服务器 EE v4.5.0
我尝试使用 CacheManager 的 Couchbase 配置设置缓存层,但似乎正在打开大量连接,导致 Web 服务器上的临时端口耗尽。
这是我的配置设置:
还有我的 Couchbase web.config 设置:
当客户端被调用时:
任何指导将不胜感激!
编辑:我的本地计算机上的这段代码没有问题,但是当站点部署在 IIS 上的流量较高的环境中时,事件查看器中的以下 Windows 事件的结果是什么:
由于所有此类端口都在使用中,从全局 TCP 端口空间分配临时端口号的请求失败。
... 和...
TCP/IP 未能建立传出连接,因为选定的本地端点最近被用于连接到同一个远程端点。当传出连接以高速率打开和关闭时,通常会发生此错误,从而导致使用所有可用的本地端口并强制 TCP/IP 将本地端口重新用于传出连接。为了最大限度地降低数据损坏的风险,TCP/IP 标准要求在从给定本地端点到给定远程端点的连续连接之间经过的最短时间段。