问题标签 [booksleeve]

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 回答
242 浏览

redis - Redis Booksleeve,临时集

我需要在现有集合和来自用户输入的一些值之间执行例外操作。我怎样才能以最好的方式做到这一点?我首先考虑使用一个临时集来存储用户的值。这可以在多线程应用程序(Web)中工作吗?如果是这样,我怎么能确保临时集没有被其他用户覆盖,然后再执行除外调用?或者我是否需要为每个用户设置一个唯一的临时集?

也许交易是要走的路? http://redis.io/topics/transactions

0 投票
1 回答
657 浏览

c# - Redis BookSleeve 套接字耗尽

使用 BookSleeve 连接我的 Redis 服务器并向/从我的 Redis 服务器添加/获取条目时,我收到一个 SocketException。具体的例外是:每个套接字地址(协议/网络地址/端口)通常只允许使用一次。

堆栈跟踪指向:BookSleeve.RedisConnectionBase.Wait(Task task) in d:\Dev\BookSleeve\BookSleeve\RedisConnectionBase.cs:2050

我的问题是我是否在我的代码中做错了什么(很可能)没有正确关闭连接或类似的东西?在大约 60 秒内执行约 16000 次操作后,往往会引发异常。这似乎不是一个过于丰富的操作,对吧?

相关代码如下,我很乐意提供任何其他信息。

检索连接(这主要是从 BookSleeve 单元测试中复制的:

RedisConnection 对象的通用扩展方法:

0 投票
1 回答
1245 浏览

c# - BookSleeve BlockingRemoveLeft 只返回一些推入列表的项目

我正在尝试基于 BookSleeve组合一个超级简单的排队示例。

到目前为止,这是队列消费者方面的内容:

我作为生产者在LINQPad中运行以下命令:

我得到了一些非常奇怪的结果:

第一次运行:

第二次运行:

第三次运行:

此外,每次运行后,LINQPad 都会输出:queue length: 0,并且LLEN test使用实际的 redis 客户端运行会返回(integer) 0

我不禁觉得我在这里遗漏了一些东西,很可能与异步的东西有关,但我就是看不到。

我的redis版本是2.8.3,BookSleeve版本是1.3.41。

这里的实际问题是:为什么 BookSleeve 只返回发送到 redis 列表的消息的子集?

0 投票
2 回答
10617 浏览

c# - 如何让 Web Api 正确地将 Json.net 序列化字符串对象发送回客户端?

我正在使用 JsonConvert.SerializeObject( ) 序列化一个 IEnumerbale 对象;它产生带引号的字符串和带空格的转义字符

从 Web Api 控制器,我使用下面的代码返回该字符串

"[{\"DegreeId\":1,\"DegreeName\":\"High School\",\"ImageSrc\":\" http://bootsnipp.com/apple-touch-icon-114x114-pre \ ",\"Description\":\" 获取高中学位\r\"},{\"DegreeId\":2,\"DegreeName\":\"Associate\",\"ImageSrc\":\" http ://bootsnipp.com/apple-touch-icon-114x114-pre \",\"Description\":\" 获得副学士学位\r\"},{\"DegreeId\":3,\"DegreeName\" :\"Bachelor\",\"ImageSrc\":\" http://bootsnipp.com/apple-touch-icon-114x114-pre \",\"Description\":\" 获得学士学位\r\" },{\"DegreeId\":4,\"DegreeName\":\"Masters\", \"ImageSrc\":\" http://bootsnipp.com/apple-touch-icon-114x114-pre \",\"Description\":\" 获取硕士学位\r\"},{\"DegreeId\ ":5,\"DegreeName\":\"Doctrate\",\"ImageSrc\":\" http://bootsnipp.com/apple-touch-icon-114x114-pre \",\"说明\":\"获得博士学位\"}]"

这是我的 ajax,由于额外的包装引号和转义字符,它无法正确识别 JSON,

我需要使用 JsonConvert.SerializeObject,因为我使用 bookleeve 将它作为 JSon 缓存在我的 redis 缓存服务器中,这样我就不需要每次都重新序列化并从 db 读取。如何避免 Web api 控制器发送引号和反斜杠?我可以简单地返回 IEnumerable 并让 Web Api 进行 JSOn 序列化,但我需要将它缓存在 redis 端

0 投票
1 回答
2021 浏览

c# - 如何使用 Booksleeve 在 Redis 中处理数字/整数值

我目前正在使用内存缓存,并希望使用 Redis 切换到分布式缓存机制。我查看了 ServiceStack 的客户端,但限速许可对我不起作用,因此似乎推荐使用 Booksleeve。

我已经设置了一个测试程序来设置并从 Booksleeve 返回相同的值,但我得到的结果似乎不是我预期的格式,我不确定什么是正确的方法处理这个是(我可以看到的文档方式并不多)。这是我的简单测试程序:

如您所见,我在任何时候都无法取回使用原始“Set”语句缓存的相同值“100”。有趣的是,我似乎无法按数值缓存(因为 Get 和 Set 是 的成员conn.Strings)。推荐的方法是只处理.ToString()所有数字键值吗?

关于为什么我无法取回原始缓存值(以及这样做的最佳实践)的任何解释将不胜感激。

0 投票
1 回答
529 浏览

c# - 使用反射获取对象属性,实例属性除外

我想使用反射枚举所有对象属性,但我想排除引用对象的属性(这应该足够快,因为我在使用 Redis/Booksleve 的缓存解决方案中使用)。

目前我有以下内容,但这会返回所有对象属性,包括实例成员:

0 投票
1 回答
205 浏览

c# - 使用 Redis 和 Booksleeve 存储论坛消息

我有以下班级女巫在论坛中存储消息

目前,我正在使用 Booksleeve 缓存这些对象,方法是使用以下代码(简化版本)将它们与 Json 序列化存储在字符串键中(如果在 Redis 中):

在我的论坛应用程序视图中,我使用了上述大部分字段,因为我显示了属于论坛线程的上述消息的列表。

为了获取 ForumMessage 类的列表,我使用了mget命令。

当用户发布新消息或为消息投票时,我需要更新上述某些字段。当我更新时,我通过 redis get获取消息,更新所需的字段/字段(主要是一个或两个字段),然后我通过conn.store booksleeve 方法存储更新。

目前论坛高峰时段收到约12条消息/分钟和20票/分钟(总票数不是每条消息)

如果上述问题的更优解决方案是将消息存储在 redis 哈希中,我会徘徊,因为这样更新会更快。但是为了使用哈希,在 redis 上进行初始存储的代码会更复杂(慢),并且此代码将在 Web 服务器而不是 redis 服务器上运行。

您是否认为值得通过使用哈希来重新实现消息存储/检索过程,或者当消息插入率以 30 条消息/分钟增加时,比我现在使用的解决方案能够很好地扩展?

本质上,您能否就stackoverflow如何处理这种情况提供一些指导?

0 投票
1 回答
380 浏览

c# - 添加多个成员 - Redis Booksleeve 中不支持的分值

我正在尝试使用 Redis Booksleeve 存储多个成员分数值,但 Booksleeve api 似乎不支持此功能。

conn.SortedSets.Add重载仅支持单对值 - 分数。

我是否错过了什么,或者这是故意的,或者您忘记实施的事情?

目前我正在像这样的事务循环中更新我的排序集:

从性能的角度来看,以上是否与使用多个成员得分值进行 ZADD 相同?

0 投票
1 回答
292 浏览

c# - Redis Booksleeve 客户端,ResultCompletionMode.PreserveOrder 不起作用

当我在控制台上打印接收到的消息时,显示的消息都被弄乱了,每条消息都包含 5 个字符串子消息,这些子消息在控制恢复到传入消息回调之前打印在控制台上。我强烈认为这是因为传入的消息事件是在 Booksleeve 中异步引发的?

我参考了以下帖子,PubSub 如何在 BookSleeve/Redis 中工作?,其中作者 Marc Gravell 指出通过将 Completion Mode 设置为“PreserveOrder”来强制同步接收的能力。我已经这样做了,在连接客户端之前和之后都尝试过。两者似乎都不起作用。

有什么想法可以接收消息并按照发送的确切顺序在控制台上打印它们吗?在这种情况下,我只有一个出版商。

谢谢

编辑:

下面的一些代码片段展示了我如何发送消息以及我快速编写的 Booksleeve 包装器。

这里是客户端(我有一个类似Client2的接收消息并检查顺序,但我省略了它,因为它看起来微不足道)。

这里是库的相关代码片段:

0 投票
1 回答
2995 浏览

redis - Stackexchange.Redis ConnectionMultiplexer.Connect() 在连接失败时什么都不做?

我尝试通过连接到我的 Redis Serverinstance,ConnectionMultiplexer.Connect("127.0.0.1");但尽管没有服务器启动并运行,连接不会引发错误或引发任何ConnectionFailed事件。我仔细检查了我没有运行任何独立实例或 Redis 的 Windows 服务。

如何检查连接是否成功?我在 .Net 4.5 上运行并使用 StackExchange.Redis 版本 4.0.30319

谢谢