问题标签 [cachingframework.redis]

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.

0 投票
1 回答
840 浏览

c# - 如何使用 redis 字典添加 IEnumerable<T> 集合数据?

我试过如下

但它无法将值插入redis字典:(我用过

0 投票
0 回答
230 浏览

c# - 使用 CachingFramework.Redis 更新 IRedisDictionary 的超时

我有两个设置为 CQRS 的服务 - 所以一个是仅查询服务,另一个是可以更改数据的命令服务。

这些服务由 MongoDB 提供支持,并且高度并行化——多个查询使用聚合框架,并且聚合起来会消耗大量连接——当它们实际上不断地重新读取相同的数据时。

所以我认为 Redis 非常适合 MongoDB 之上的缓存层。我正在使用CachingFramework.Redis构建StackExchange.Redis.

对于查询方法,我创建了一个键对象,将其序列化为一个字符串,然后使用FetchHashedAsync. 这似乎运作良好,我可以通过在写入发生时重建各种键来轻松更新/使缓存项无效 - 当键可以从主缓存项重建时。

当这不容易实现时,事情会变得更加复杂;也就是说,当我缓存一般过滤器查询的结果时。

到目前为止,我的方法是存储一个字典,将过滤器映射到作为结果从 MongoDB 获取的对象的主键 - 并将它们存储在一个IRedisDictionary实例中。

这似乎不是一个好主意 - 因为我看到超时:

有没有更好的方法来解决这个问题?

0 投票
1 回答
92 浏览

c# - 执行函数时出现 Azure Redis 异常:MyFunction -> 无法找到程序集 'MySolution.MyProject.MyService

在使用 CachingFramework.Redis 时,我试图将对象插入到键、字段哈希中......

但是,当我尝试恢复散列值时......

我得到错误...

“Microsoft.Azure.WebJobs.Host.FunctionInvocationException:执行函数时出现异常:MyFunction ---> System.Runtime.Serialization.SerializationException:找不到程序集'MySolution.MyProject.MyService,版本=1.0.0.0,文化=中性, PublicKeyToken=null'。\r\n 在异步 Microsoft.Azure.WebJobs.Host.Executors.FunctionExecutor.FunctionInvocationFilterInvoker.InvokeAsync(Object instance,Object[] arguments)\r\n 在异步 Microsoft.Azure.WebJobs.Host.Executors .FunctionExecutor.InvokeAsync(IFunctionInvoker 调用者,ParameterHelper parameterHelper,CancellationTokenSource timeoutTokenSource,CancellationTokenSource functionCancellationTokenSource,Boolean throwOnTimeout,TimeSpan timerInterval,IFunctionInstance 实例)\r\n ....

0 投票
0 回答
275 浏览

c# - CachingFramework.Redis 使用标签时超时

我正在使用CachingFramework.Redis中的标记机制实现缓存。

我的应用程序可以成功读取和写入 Redis,并且可以在 Redis 中创建标签(我可以在桌面管理器中看到)。但是,仅当我尝试从 Redis 中的标记存储读取时,才会出现超时异常:

System.TimeoutException: '超时执行 TYPE :$ tag $:_HB, inst: 63, mgr: ExecuteSelect, err: never, queue: 1, qu: 1, qs: 0, qc: 0, wr: 0, wq: 1 , in: 0, ar: 0, clientName: LAPTOP-GLFEVSO4, serverEndpoint: 127.0.0.1:6379, keyHashSlot: 14024, IOCP: (Busy=0,Free=1000,Min=200,Max=1000), WORKER: ( Busy=3,Free=997,Min=200,Max=1000), Local-CPU: 100% (请看这篇文章了解一些可能导致超时的常见客户端问题:https ://github.com /StackExchange/StackExchange.Redis/tree/master/Docs/Timeouts.md )'

调用代码是这样的:

我已经检查过内存使用和 CPU 不是问题,并且我在 machine.config 中增加了 MinIOThreads。我没有想法......这是CachingFramework.Redis(或底层StackExchange.Redis)中的一个错误,还是我做错了什么?

[* 我在调试模式下使用 VS2017/IIS Express,针对我的开发机器上的本地 Redis 独立实例]

更新 该问题仅在 Visual Studio 的调试模式下发生。在运行时,它似乎很好。但是,能够调试会很好。

0 投票
1 回答
67 浏览

cachingframework.redis - 避免将对象添加到缓存中

在示例中

如何防止将 string.empty 结果添加到缓存中......导致它下次再次调用该函数GetUserNameFromDatabase

使用某种检查委托会很好,如果返回 true 将导致结果被添加,否则不会。

0 投票
0 回答
95 浏览

c# - 使用 lex.Match 而不是 lex.Autocomplete 时 Redis Lexicographicset 超时错误

我正在使用 Azure redis 缓存来保存一些数据,并使用 IRedisLexicographicSet 在“自动完成”类型的函数中读取该数据。下面的代码工作正常:

问题是“自动完成”只在右边使用通配符(字符串*),我需要左右(*字符串*)。

根据我的阅读,我想使用“匹配”功能,但是当我将代码更改为

我得到错误:

执行 ZSCAN 自动完成超时,inst: 0, mgr: Inactive, err: never, queue: 1, qu: 1, qs: 0, qc: 0, wr: 0, wq: 1, in: 0, ar: 0, clientName : D100169, serverEndpoint: Unspecified/taxweb.redis.cache.windows.net:6380, keyHashSlot: 16074, IOCP: (Busy=0,Free=1000,Min=8,Max=1000), WORKER: (Busy=3, Free=8188,Min=8,Max=8191) (请看这篇文章,了解一些可能导致超时的常见客户端问题:http: //stackexchange.github.io/StackExchange.Redis/Timeouts

执行时间几乎是即时的,从某种意义上说它并没有超时,因为它花费了太长时间。

我已阅读错误消息中的链接,但仍不确定解决方案是什么。我尝试将“syncTimeout = 600000”添加到连接字符串中,但这也没有解决它。

一点帮助?谢谢。

0 投票
1 回答
1208 浏览

redis - AWS RedisConnectionException:没有可用于服务此操作的连接。套接字关闭异常

突然,我们开始在点击时遇到下面提到的异常Redis Cache (AWS)。过去它工作得很好。我们已经看到Redis 节点的当前连接数持续增加。

访问redis时出现“无可用连接”异常。以下是异常-“没有可用的连接可用于服务此操作:GET xxxxx; SocketClosed on xxxxx/Interactive,来源:ProcessReadBytes,输入缓冲区:0,未完成:0,最后读取:69 秒前,最后写入:69 秒前,未应答写入:2630 秒前,保持活动:60 秒,待处理:0 , state: ConnectedEstablished, in: 0, ar: 0, last-heartbeat: 0s ago, last-mbeat: 0s ago, global: 0s ago: RedisConnectionException at StackExchange.Redis.ConnectionMultiplexer.ExecuteSyncImpl[T](消息消息,ResultProcessor1 处理器, ServerEndPoint server) in c:\code\StackExchange.Redis\StackExchange.Redis\StackExchange\Redis\ConnectionMultiplexer.cs:line 2027 at StackExchange.Redis.RedisBase.ExecuteSync[T](Message message, ResultProcessor1 processor, ServerEndPoint server) in C:

我们正在使用.Net framework 4.5and StackExchange.Redis 1.2.1,我们尝试使用最新版本的StackExchange.Redis,但它似乎不支持.Net framework 4.5

在不改变当前应用程序的 .Net 框架的情况下我们应该怎么做?谢谢。

0 投票
1 回答
54 浏览

cachingframework.redis - 如果我尝试使用 SetObject 并且我已经拥有相同的密钥,会发生什么情况?

我正在开发一个使用 Redis 缓存和缓存框架.redis 的项目。

我已经使用 Redis 的 get 函数(使用 FetchObject)

但我需要更新 Save 函数以保存在 DB 中并覆盖/更新 Redis 中的键/值。

我应该使用 SetObject 吗?或者我需要先调用 Remove(key)