问题标签 [servicestack.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.
authentication - 如何禁用 redis 将自动会话存储到数据库?
我用这段代码存储redis db
但是,当我检查 redis db 时;
有没有办法禁用这个自动 iauthsessionstore 禁用?
redis - 如何使用 StackExchange.Redis 设置带有 TTL 的字符串
我正在寻找一种在 Redis 中执行非常简单的 TTL字符串的方法:
那么如何在StackExchange.Redis中执行与以下等效的操作?
我找到KeyExpire
了,但这意味着我设置的每个键都需要两次调用?
.net - 是否可以使 ServiceStack Json 序列化程序序列化标有 JsonIgnore 的属性
我们有一个应用程序,我们正在使用 ServiceStack.Redis 进行缓存。该应用程序是一个 REST API,我们在其中以 JSON 格式提供响应。我们使用 Newtonsoft JSON.NET 来序列化我们的响应,当然 ServiceStack.Redis 使用 ServiceStack.Text 来序列化/反序列化存储在 Redis 缓存中的数据。
问题是我们想要在缓存中存储比我们提供给客户端更多的数据。因此,我们一直在使用 JSON.NET 中的 [JsonIgnore] 属性标记我们不想向客户端公开的属性。这在 ServiceStack.Redis 4.0.20 中效果很好,但是当我们升级到 4.0.30 时就坏了。似乎他们改变了 Json Serializer 的行为以尊重 JSON.NET 的 JsonIgnore 属性(https://github.com/ServiceStack/ServiceStack.Text/pull/420)。
所以如果我们有课
并尝试序列化对象
过去存储在 Redis 中的是
但现在我们失去了酒吧,只得到
有什么办法可以让ServiceStack序列化标记有JsonIgnore的属性,还是我们需要回到之前的版本(并且可能永远卡在之前的版本上)?
或者,有没有一种好方法可以让 JSON.NET 在不使用 JsonIgnore 的情况下忽略某些属性?
c# - redis c# client, how do i get Subscribers count?
i need to give statistic about my publisher app like how many subscribers are there?
i cant seen to get that information from the redis server
i already tried to find in the 'ServiceStack.Redis.RedisSubscription'
i found this:
but it returning 0 every time.
any ideas?
edit: i found this http://redis.io/commands/client-list but steel need some help on how to use it thanks : )
servicestack.redis - AddItemToSet 与 StoreRelatedEntities
我试图了解何时有人会使用 AddItemToSet 与 StoreRelatedEntities。
似乎前者是一种将集合标签与基于字符串的项目句柄相关联的方法。
后者是一种关联两个实体的方法,这似乎是一种更通用的操作。
什么是 AddItemToSet 做 StoreRelatedEntities 不能做的?
谢谢
c# - 从 Redis 映射数据的有效方法
我正在使用 Redis 和 ServiceStack.Redis 作为客户端。我最初使用“AutoMapper”将缓存的对象映射到域对象,但这很慢。使用其他人的示例,我设置了一个自定义映射器,但这也非常慢。
下面的代码有什么明显的错误吗?从 Redis 映射 1000 个项目需要 4-5 秒。
引入滞后的是“GetByIds”客户端方法,但我想要一种有效的方法将集合存储为 Redis 中的 ID 列表,但看不到另一种将这些转换为域对象列表的方法。
谢谢!
servicestack - 获取相关实体空列表(父级没有记录)vs null(尚未设置记录)
我正在使用 Redis Store 和 GetRelatedEntities 调用将 userId 与该用户的组相关联。
在服务调用中,我想在调用昂贵的数据库调用第一次获取组之前查看组是否已存储到缓存中(我认为这是非常标准的)
如果之前未针对该 userId 调用 StoreRelatedEntities,则 GetRelatedEntities 调用将返回一个空列表。但是,空列表可能意味着用户没有任何组,因此我需要一种方法来确定之前没有为该用户设置组。
有什么办法可以区分这两种状态吗?
谢谢
servicestack - 选择 RabbitMQ 而不是 Redis 作为 ServiceStack MQ 代理是否有任何权衡?
我正处于设计基于队列的系统的初始阶段,并且希望了解将其中一个或另一个用作消息的后备存储的利弊。
大致流程:
ServiceStack 外部 Web 服务将接收 HTTP 消息并将这些 DTO 立即发送到持久消息队列。我可以设想这个特定的队列/主题是 PubSub,因为我有许多其他可能需要通知的进程,一个是出于历史原因存储消息的进程,另一个是对消息本身采取行动并执行一些操作......订阅者/客户列表继续进行。
除了我在 ServiceStack 和基于持久队列的消息传递方面的经验非常有限之外,有什么阻碍我按照这些思路实现某些东西吗?
到目前为止,我的阅读包括这些文章:
ServiceStack - RedisMqServerTest
谢谢你,斯蒂芬
redis - 使用 ServiceStack Redis 进行分布式锁定的互斥冲突
我正在尝试使用 ServiceStack-Redis 库提供并在此处描述的锁定机制来实现 DLM ,但我发现 API 似乎存在竞争条件,有时会向多个客户端授予相同的锁。
当运行上面的代码来模拟两个客户端在短时间内尝试相同的操作时,有三个可能的输出。第一个是互斥体正常工作并且客户端以正确顺序进行的最佳情况。第二种情况是第二个客户端超时等待获取锁;也是可以接受的结果。然而,问题在于,当arbitraryDurationOfExecutingCode
接近或超过获取锁的超时时间时,很容易重现第二个客户端在第一个客户端释放锁之前被授予锁的情况,产生如下输出:
client1:我获得了锁!(touched: 0x)
client2: 我获得了锁!(touched: 0x)
client1: 好的,我释放了我的锁,现在轮到你了。
客户 2:好的,我释放了我的锁,现在轮到你了。
一共摸了2x。
我对 API 及其文档的理解是,timeOut
获取锁时的参数就是——获取锁的超时时间。如果我必须猜测一个timeOut
足够高的值以始终长于执行代码的持续时间以防止出现这种情况,那似乎很容易出错。除了传递 null 来永远等待锁之外,还有其他人可以解决吗?我绝对不想这样做,否则我知道我最终会得到坠毁工人的鬼锁。
c# - 我们如何从redis中删除表项?
我想要所有的 idbclients,它是什么脚本形式的 redis cli?