问题标签 [stackexchange.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# - StackExchange.Redis SetAdd(key, val) 因 key = GUID 而崩溃
非常烦人的崩溃StackExchange.Redis
SetAdd(key, val)
。
我想设置一个以程序 GUID 作为键的集合。
我发现(经过 3 小时的调试)SetAdd(key, val)
可以使用某些 GUID,但会与其他 GUID 一起崩溃:
区别在于最后一个字符“9”与“7”
不能SetAdd
将本地 GUID 用作密钥?
环境:C# .NET 4 Win 8.1 VS2013
崩溃消息:
坠机点在StackExchange.Redis
...
我在 LINQPad 中测试了这段代码。它在同一个地方崩溃。第一个 GUID 有效,第二个无效。
似乎崩溃不是因为这是启动应用程序 GUID。
使用不同的 GUID 进行更多测试。只有以“7”结尾的崩溃。
...
KeyExists
, StringIncrement
,StringSet
与 key = my GUID 配合使用效果很好。
redis - StackExchange.Redis - 禁用 EVALSHA?
在停止和重新启动 Redis 服务器时,通过 Redis 发送内容会引发以下错误:“StackExchange.Redis.RedisServerException:NOSCRIPT 没有匹配的脚本。请使用 EVAL。”
我的理解是,当服务器不记得带有 SHA1 摘要的脚本时,就会发生此错误。我猜服务器会在重新启动时删除缓存的脚本 - 这应该如何处理?
memory-leaks - 如何判断 Redis 内存泄漏?
从昨天开始,我们的 redis 服务器逐渐(200MB/小时)使用更多的内存,而键的数量(330K)和它们的数据(132MB redis-rdb-tools)保持不变。
redis-cli info 的输出显示 6.89G 已用内存?!
当我们将(.net)客户端代码从 BookSleeve 1.1.0.4 更新到 ServiceStack v3.9.71 以准备升级到 Redis 2.8 时,问题就开始了。但是很多其他的东西都更新到了而且我们的会话状态存储(也是redis,但使用harbor客户端)没有表现出相同的症状。
Redis 的所有内存都去哪儿了?如何解决它的使用问题?
编辑:我刚刚重新启动了这个实例,内存恢复到 350M,现在又开始爬升了。前 10 个最大对象的大小仍然相同,从 100K 到 nr 1 的 25M 不等。键的数量已下降到 270K(之前为 330K)。
performance - 100% CPU 时如何提高 Redis 性能?分片?最快的 .Net 客户端?
由于我们网站上的大量负载增加,redis 现在正努力应对峰值负载,因为 redis 服务器实例达到 100% CPU(在八个内核之一上)导致超时。
我们已将客户端软件更新到 ServiceStack V3(来自 BookSleeve 1.1.0.4)并将 redis 服务器升级到 2.8.11(来自 2.4.x)。我之所以选择 ServiceStack,是因为存在使用 ServiceStack.Redis的Harbour.RedisSessionStateStore 。我们之前将 AngiesList.Redis 与 BookSleeve 一起使用,但我们也体验到了 100%。
我们有八个配置为主/从树的 redis 服务器。用于会话状态的单个服务器。其他用于数据缓存。一个主站有两个主站/从站,每个从站连接到两个从站。
当服务器以 100% 的 CPU 开始阻塞时,它们会在峰值时保持大约 600 个客户端连接。
我们可以做些什么来提高性能?
分片和/或 StackExchange Redis 客户端(据我所知,没有可用的会话状态客户端......)。
或者它可能是别的东西?会话服务器也达到 100%,并且没有连接到任何其他服务器(数据和网络吞吐量很低)。
更新一:redis-cli INFO分析
这是运行 Redis 2.8 一晚后 INFO 命令的输出。
更新 2:twemproxy(分片)
我发现了一个有趣的组件,叫做twemproxy。据我了解,这个组件可以跨多个 redis 实例进行分片。
这会有助于减轻 CPU 的负担吗?
它会为我们节省大量的编程时间,但在每台服务器上配置 3 个额外的实例仍然需要一些努力。所以我希望有人能在我们投入工作之前确认或揭穿这个解决方案。
c# - Redis StackExchange 缓存性能
我正在尝试使用 Azure 的 Redis StackExchange 更改提供程序,只是想知道最佳设置。
考虑以下代码
每次调用缓存时,获取数据库都会对性能造成影响吗?
是否应该以其他方式进行管理?
它应该只在对象的生命周期内创建而不是静态的吗?
管理 IDatabase 的最佳实践是什么?
azure - 从 StackExchange.Redis 缓存中删除/删除所有/一项
我正在使用带有 Azure Redis 缓存服务的 StackExchange.Redis 客户端。这是我的课,
更新:在 Marc 的帮助下,这是我的最后一堂课
现在我不知道如何从 redis 缓存中删除所有项目或单个项目。
c# - Redis 的随机 NullReferenceException
我的代码中出现了间歇性错误。当我使用 Visual Studio 调试它时,所有异常(捕获和未捕获)都会中断,所以我不知道该怎么做。
看起来它是堆栈跟踪中的会话状态提供程序,这是配置:
我从 NuGet 安装了 StackExchange.Redis,我正在运行 1.0.297。我无法定期重现这种情况,我尝试了各种浏览器和操作系统,但它只是“有时”发生。
这是堆栈跟踪:
asp.net-mvc - OAuth 2 Owin 不工作 StackExchange.Redis SessionState
从一个全新的 MVC5 项目开始,我将 External OAuth Login 与 Google、Facebook Twitter、Microsoft 等连接起来。一切都按预期工作。
然后,我为 Redis 预览版添加了新的ASP.NET 会话状态提供程序并让它工作。是的!
我很快注意到尝试使用任何 OAuth 提供程序登录不再正常工作。Google 和 Facebook 登录按钮调用 Accont 控制器上的 ExternalLoginCallback(string returnUrl) 但无处可去。登录页面只是刷新。
LinkedIn、Twitter 和 Microsoft 按钮都将用户引导到这些登录页面,但是当返回到我的应用程序时,它们返回到登录页面并且没有用户添加到系统中。
在我的 web.config 中注释掉自定义 sessionState 条目会使外部登录恢复正常。
考虑到这两个框架对我来说都是黑匣子,我不确定如何让这两个框架一起发挥作用。
redis - key.Exists 为过期密钥返回 true
可能是我错过了一些一般性的东西,对此我感到抱歉。但在我的测试中,当我检查过期密钥(哈希)是否存在时,它返回 true:
这里的“缓存”是 IDatabase 实例
此外,使用 When.NotExists 设置将起作用:
更新:
@Marc_Gravell 的回答帮助我在测试中找到了问题:当我将到期时间设置得太短(约 500 毫秒)时,我收到了这种奇怪的行为。当我确实将其更改为 1 或 2 秒时 - 我的测试现在通过了。
在更改Marc 的示例中,也会发生这种情况(我将过期时间更改为 400 毫秒):
// cache.HashSet(key, "full", "some value"); // cache.KeyExpire(key, TimeSpan.FromSeconds(3));
带来
更新 2:
这段代码昨天对我来说很好,但现在不起作用。
线
返回
更改为使用秒数没有帮助:
返回相同的结果( Assert.IsFalse(exists, "expired key exists"))