问题标签 [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.

0 投票
2 回答
404 浏览

caching - 在 StackExchange.Redis 中设置缓存期间出现 TimeoutException

我正在尝试使用 Visual Studio 中的 StackExchange.Redis 客户端在 Azure Redis 缓存中设置键值对。这是我的代码:

但是,当代码设置一些随机键值对时,我得到了 TimeoutException。可能是什么问题,我应该如何解决?谢谢。

0 投票
4 回答
23881 浏览

c# - 如何通过 StackExchange.Redis 将通用列表添加到 Redis?

例如,如果我有一个名为 Customer 的模型

例子:

我将如何添加客户列表?我该怎么做?

我认为 SetAdd 是正确的方法,但我看不到如何获取我的通用客户列表(即列表为 RedisValue 的格式。

0 投票
1 回答
2448 浏览

publish-subscribe - StackExchange.Redis 订阅恢复

我正在使用 StackExchange.Redis 1.0.331 (NuGet) 并且无法按照文档的预期工作

redis 的另一个常见用途是作为发布/订阅消息分发工具;这也很简单,如果连接失败,ConnectionMultiplexer 将处理重新订阅请求频道的所有细节。

测试用例

我错过了什么吗?

0 投票
2 回答
1309 浏览

c# - 将 Response.RemoveOutputCacheItem 与 RedisOutputCacheProvider 一起使用

我正在使用 Microsoft RedisOutputCacheProvider并有一个非常简单的 PartialView,我通过以下方式根据当前用户的SessionId进行缓存VaryByCustom

这很好用并且可以按预期进行缓存,但是我想从另一个页面手动使此 OutputCache 过期。我试过了:

但这似乎不起作用。我也无法通过我的 Redis 存储或后端代码看到任何 OutputCache 键,但我绝对可以看到正在缓存的视图。

0 投票
3 回答
5200 浏览

redis - StackExchange.Redis 事务方法冻结

我有这段代码可以在 Stackexchange.Redis 中添加对象和索引字段。事务冻结线程中的所有方法。为什么 ?

0 投票
1 回答
408 浏览

stackexchange.redis - StackExchange.Redis 中的 RedisClient

@MarcGravell。我注意到 Azure 的 StackExchange.Redis 中不存在 RedisClient(在 ServiceStack.Redis 中)。有什么计划让它可用吗?特别是,我将 RedisClient.AcquireLock 用于分布式锁。注意:我也可以使用 ServiceStack.Redis 连接到 Azure 中的 Redis 实例,但如果可以在 StackExchange.Redis 中使用那就太好了。

0 投票
2 回答
3516 浏览

redis - StackExchange Redis 的分区键空间

在开发使用 Redis 的组件时,我发现为该组件使用的所有键添加前缀是一种很好的模式,这样它就不会干扰其他组件。

例子:

  • 管理用户的组件可能使用前缀为 的键,user:管理日志的组件可能使用前缀为log:.

  • 在多租户系统中,我希望每个客户在 Redis 中使用单独的密钥空间,以确保他们的数据不会受到干扰。然后前缀将类似于customer:<id>:与特定客户相关的所有键。

使用 Redis 对我来说仍然是新事物。我对这种分区模式的第一个想法是为每个分区使用单独的数据库标识符。然而,这似乎是一个坏主意,因为数据库的数量是有限的,而且它似乎是一个即将被弃用的功能。

对此的替代方法是让每个组件获取一个IDatabase实例,并RedisKey使用它为所有键添加前缀。(我正在使用StackExchange.Redis

我一直在寻找一个IDatabase自动为所有键添加前缀的包装器,以便组件可以按原样使用IDatabase接口,而不必担心它的键空间。我没有找到任何东西。

所以我的问题是:在 StackExchange Redis 之上使用分区键空间的推荐方法是什么?

我现在正在考虑实现我自己的IDatabase包装器,它会为所有键加上前缀。我认为大多数方法只会将它们的调用转发到内部IDatabase实例。但是,有些方法需要更多的工作:例如SORTRANDOMKEY

0 投票
1 回答
979 浏览

c# - StackExchange Redis .NET 客户端在重新排序连接时未收到消息

在 C# 应用程序中使用 StackExchange.Redis 客户端,我试图使用 PubSub 在运行同一应用程序的 Web 服务器之间执行跨服务器通信。在该模型中,每台服务器都运行自己的 Redis 服务器,其连接多路复用器将本地服务器设置为列表中的第一个服务器。换句话说,SERVER_A 和 SERVER_B 各自在 6379 端口上运行一个 Redis 服务器,并具有如下连接字符串:

使用外部客户端订阅每个 Redis 服务器,我可以看到 SERVER_A 向其本地 Redis 服务器发布消息。然而,SERVER_B 没有接收到消息,尽管通过多路复用器建立了连接。当我重新排列连接的顺序以使它们匹配时,来自 A 的消息会被 B 拾取。设置中是否有某些内容或我需要这样做,以便连接多路复用器将侦听所有服务器上的订阅,或者是这是 StackExchange.Redis 客户端中的错误?

0 投票
1 回答
9643 浏览

json - 有没有办法将 RedisValue[] 转换为 string[]?

RedisValue[]我有一个从客户端返回的数组StackExchange.Redis。我想获取数组中的每个值(实际上是JSON字符串)并将它们连接在一起以获得JSON可以返回给客户端的有效字符串。

这就是我想做的...

但是,这不起作用,因为results它是一个数组而RedisValue不是string. RedisValue除了迭代数组之外,是否有一种直接且高效的方法来执行此操作?

0 投票
3 回答
16579 浏览

c# - StackExchange.Redis 通过“as byte[]”将 RedisValue 转换为 byte[] 返回 null

我正在尝试为 Strathweb.CacheOutput.WebApi2 创建一个 Redis 提供程序,但尝试从 byte[] -> RedisValue -> byte[] 转换返回 null。

我可以手动将对象类型设置为 byte[] 而不是 var / RedisValue,它会正确地将值返回为 byte[],但是在将其设置为 RedisValue 之后,它无法将其转换为 byte[]。

他的接口有 Get 总是返回一个对象,所以我不能强制类型或使用单独的调用,而不必修改接口。

如果我尝试做一个result as byte[]我得到 Cannot convert type 'StackExchange.Redis.RedisValue' to 'byte[]' via a reference conversion, boxing conversion, unboxing conversion, wrapping conversion, or null type conversion

如果我尝试做一个(byte[])result我得到Cannot cast 'result' (which has an actual type of 'StackExchange.Redis.RedisValue') to 'byte[]'

有什么我遗漏的东西,还是我必须通过根据密钥检查它正在寻找的数据类型来以某种方式破解它?

这是界面:

这就是它的名称:

编辑:添加我使用 ServiceStack.Redis v3 实现的 API 示例(它只是使用的工作 atmobject和不工作的 StackExchange.Redis)

https://github.com/mackayj/WebApi.OutputCache.Redis.ServiceStack

https://github.com/mackayj/WebApi.OutputCache.Redis.StackExchange