问题标签 [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 投票
1 回答
3138 浏览

redis - 执行 SCAN 超时

获取“执行扫描超时,inst:0,mgr:ExecuteSelect,队列:1,qu=1,qs=0,qc=0,wr=0/1,in=0/0”,同时在 redis 上请求键

不知道为什么会这样?

0 投票
1 回答
8005 浏览

caching - 执行 SET {Key} 超时,inst: 0, mgr: Inactive, queue: 2, qu=1, qs=1, qc=0, wr=1/1, in=0/0

我正在尝试使用 StackExchange.Redis 客户端将 90 KB 的 pdf 文件保存到 Azure Redis 缓存中。我已将该文件转换为字节数组并尝试使用 stringSet 方法保存它并收到错误。

代码:

byte[] bytes = File.ReadAllBytes("ABC.pdf"); cache.StringSet(info.Name, bytes); --> 这行抛出异常“超时执行 SET {Key}, inst: 0, mgr: Inactive, queue: 2, qu=1, qs=1, qc=0, wr=1/1, in=0/0 ”。

请帮助。

0 投票
1 回答
3783 浏览

c# - 如何使用 StackExchange.Redis 进行基本的 WATCH

我想用 StackExchange.Redis 做一个基本的手表。如果在事务期间更改了密钥,则会失败。

StackExchange.Redis 很好地将其抽象为“条件”api,它支持“等于”和“存在”的概念。

这真的很好,但我想做一些类似“不变”的事情。我可能会遗漏一些东西,但在这一点上我还不清楚如何做到这一点。

是否可以执行以下操作:

甚至可能是更好的版本(可以做同样的事情):

目前,我理解这样做的唯一方法是按照以下方式做一些事情:

从阅读 SE.Redis 代码的尝试中,我理解翻译成类似的东西(不确定这有多准确):

我仍在学习更多关于 Redis 的知识,但我不太确定这样做有什么好处。您不希望最终结果更像这样吗?:

还是 SE.Redis 的工作方式不可能做到这一点?

0 投票
1 回答
371 浏览

redis - 如何找到具有特定成员值的键?

我是 Redis 新手,将 Redis 2.8 与 StackExchange.Redis 库一起使用。
如何编写KEYS模式来获取具有特定散列成员值的所有键?

当我使用 StackExchange.Redis 并希望使用这样的模式获取密钥时(当用户名是密钥的成员时): KEYS "username:*AAA*"

我会在 HTTP 用户请求上多次调用此方法以找出存储在 Redis 数据库中的用户会话数据,您是否建议为这种方法提供更好的替代解决方案?

0 投票
1 回答
1041 浏览

redis - 为什么 StackExchange.Redis 在 transaction.ExecuteAsync() 过程中频繁抛出“Unexpected response to EXEC: MultiBulk: 0”异常?

我尝试通过代码进行调试,它似乎主要是在多个客户端试图修改事务中的相同键时重现。重试事务通常会消除错误,但是首先抛出异常有什么原因吗?

我试图执行的代码非常简单:

0 投票
1 回答
500 浏览

stackexchange.redis - SortedSetScan 的参数大小不起作用

我正在使用 SortedSetScan 过滤一些数据,我的代码如下:

db.SortedSetScan("SR.Cache.APP:Termial1", "A*", 50, CommandFlags.None);

但是页面大小总是不起作用,结果计数总是全部。我的代码有什么问题?或者它是一个错误?

有人可以帮助我吗,谢谢!

0 投票
1 回答
1340 浏览

c# - 存储到 Redis 之前是否使用 protobuf-net 序列化原语

我正在研究实现 Redis 以在 ASP.Net Web 应用程序中缓存数据。

我想知道的是,在存储到 Redis 之前是否值得通过 Protobuf-net 序列化某些类型(字符串、布尔值、int 和其他原语),还是无论如何都要序列化?

我主要对存储/检索的速度感兴趣,所以我意识到使用某些字符串,protobuf 将通过减少网络流量来发挥作用,尽管序列化开销很小。

(是的,我知道字符串不是原始的)

如果有帮助,我正在使用 StackExchange.Redis。

0 投票
1 回答
314 浏览

c# - 用于投票后和用户声誉的 Redis 排序集

我在 c# 中使用 Stackexchange.Redis。StackOverflow 如何使用排序集来计算Redis中的投票后和用户声誉。如何使用ZADDZUNIONSTOREZINTERSTORE。如何使用[WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX]参数来计算投票后和用户声誉。

0 投票
2 回答
1194 浏览

asp.net - Redis 中的 Azure 缓存/数据缓存样式区域

我正在计划将 C# ASP.Net Web 应用程序移至 Azure(当前托管在单个专用服务器上),并且正在研究缓存选项。目前,因为我们一次只运行一个应用程序实例,所以我们有一个“进程中”内存缓存来减轻 SQL DB 中一些相同的请求。

目前的过程是当管理器/服务对数据库的这些部分进行更改时清除缓存的某些部分,例如,我们有一个用户表,我们将拥有像“User.{0}”这样的键,返回一个单个用户记录/对象和“Users.ForeignKey.{0}”返回与外键相关的所有用户。如果我们更新单个用户记录,那么我们将删除“User.1”键(如果 userid = 1)并为方便所有列表集合,因为它们可能已更改。我们通过按模式删除键来做到这一点,这意味着只有受影响的键被删除,而所有其他键仍然存在。

我们计划迁移到 Azure 已经有一段时间了,当我们第一次开始查看 Azure Redis 缓存服务不可用的所有内容时,至少不支持,所以我们查看了基于 AppFabric 的 Azure 缓存服务。使用这个我们决定我们将使用 DataCache 区域来分隔不同的对象类型,然后只刷新受影响的区域,虽然不像我们当前的方法那么精确,但可以。现在,自从 Redis 出现以来,我们一直在研究它,如果可能的话,我们更愿意使用它。但是,似乎要实现相同的目标,我们必须为每个“区域”/部分设置单独的 Redis 缓存,

任何人都知道如何使用 Redis 实现类似于 Azure DataCache Regions 的功能,或者您能否提出一些我可能遗漏的明显内容。

抱歉这么长的问题/解释,但我发现很难在没有背景/背景的情况下解释我想要实现的目标。

谢谢,加雷斯

更新:

我发现了一些 bash 命令可以完成按模式删除键的工作,包括在此处使用 'KEYS' 命令和在此处使用 lua 脚本 EVAL 命令。

我打算使用 StackExchange.Redis 客户端进行交互,有谁知道在使用 StackExchange.Redis 时如何使用这些类型的命令或替代这些命令(按模式删除键)?

感谢阅读,加雷斯

0 投票
1 回答
11583 浏览

redis - 你如何处理失败的 redis 连接

我将 Redis Windows 实现与 StackExchange.Redis 客户端一起使用。我的问题是,如果初始连接失败,您如何处理重新连接尝试。当所有 Redis 主从服务都关闭时,我正在考虑最坏的情况。问题是每次我的应用程序需要缓存中的某些内容时,它都会尝试重新连接到 Redis(如果初始连接失败),这非常耗时。我的工厂类如下所示:

您可以看到我正在使用单例模式来创建连接。如果初始连接失败,我将设置一个标志 (redisConnectionValid),以便阻止后续调用尝试重新创建连接(大约需要 5-10 秒)。还有比这更好的方法吗?我们的设计目标是即使 Redis 缓存不可用,我们的应用程序也能正常工作。我们不希望应用程序性能因为连续的 Redis 连接尝试而受到影响,这些尝试在最坏的情况下最终会失败/超时。