根据属性值检索 servicestack redis 会话对象的选择

Retrieve selection of servicestack redis session objects based on values of properties

我想更新存储在 redis 中的多个 servicestack 用户会话。我想 return 所有具有自定义 属性 设置为特定值的会话,然后我可以处理它们。目前最好的解决方案是 return 所有的键都是这样的:

List<string> sessionkeys = redis.SearchKeys("urn:iauthsession:*");

我认为这不会很好地扩展。我想做一些类似的事情:

List<string> sessionkeys = redis.AllKeys.Where(x=>x.ParentId == 3);

Redis 是否可行,如果可行,最好将标准库与 ServiceStack 一起使用。

您希望使用较新的 Redis Scan API's 而不是 SearchKeys,它可以让您遍历游标中的键。

Redis 值是斑点状的,没有索引,因此没有太多机会对此进行优化。最有效的方法是使用自定义 server-side LUA operation 检查值,这将最大限度地减少发送到客户端的请求和有效负载的数量。

Redis 嵌入式版本 LUA 具有可用于反序列化 JSON 值的 cjson,Lua guide for Redis users 有一些使用它的示例。

由于 Redis 不支持服务器端查询或索引,Redis 的方式是在保存 Session 时预先准备您需要查询的查询并维护自定义索引,有关如何维护自定义索引的一些信息在 Redis 中位于:

在 ServiceStack 中,您可以覆盖 AppHost 中的 OnSaveSession(),只要保存会话,它就会被调用。