问题标签 [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.
c# - 如何使用 redis 字典添加 IEnumerable<T> 集合数据?
我试过如下
但它无法将值插入redis字典:(我用过
c# - 使用 CachingFramework.Redis 更新 IRedisDictionary 的超时
我有两个设置为 CQRS 的服务 - 所以一个是仅查询服务,另一个是可以更改数据的命令服务。
这些服务由 MongoDB 提供支持,并且高度并行化——多个查询使用聚合框架,并且聚合起来会消耗大量连接——当它们实际上不断地重新读取相同的数据时。
所以我认为 Redis 非常适合 MongoDB 之上的缓存层。我正在使用CachingFramework.Redis
构建在StackExchange.Redis
.
对于查询方法,我创建了一个键对象,将其序列化为一个字符串,然后使用FetchHashedAsync
. 这似乎运作良好,我可以通过在写入发生时重建各种键来轻松更新/使缓存项无效 - 当键可以从主缓存项重建时。
当这不容易实现时,事情会变得更加复杂;也就是说,当我缓存一般过滤器查询的结果时。
到目前为止,我的方法是存储一个字典,将过滤器映射到作为结果从 MongoDB 获取的对象的主键 - 并将它们存储在一个IRedisDictionary
实例中。
这似乎不是一个好主意 - 因为我看到超时:
有没有更好的方法来解决这个问题?
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 ....
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 的调试模式下发生。在运行时,它似乎很好。但是,能够调试会很好。
cachingframework.redis - 避免将对象添加到缓存中
在示例中
如何防止将 string.empty 结果添加到缓存中......导致它下次再次调用该函数GetUserNameFromDatabase
使用某种检查委托会很好,如果返回 true 将导致结果被添加,否则不会。
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”添加到连接字符串中,但这也没有解决它。
一点帮助?谢谢。
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.5
and StackExchange.Redis 1.2.1
,我们尝试使用最新版本的StackExchange.Redis
,但它似乎不支持.Net framework 4.5
。
在不改变当前应用程序的 .Net 框架的情况下我们应该怎么做?谢谢。
cachingframework.redis - 如果我尝试使用 SetObject 并且我已经拥有相同的密钥,会发生什么情况?
我正在开发一个使用 Redis 缓存和缓存框架.redis 的项目。
我已经使用 Redis 的 get 函数(使用 FetchObject)
但我需要更新 Save 函数以保存在 DB 中并覆盖/更新 Redis 中的键/值。
我应该使用 SetObject 吗?或者我需要先调用 Remove(key)