根据属性值检索 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 中位于:
- Storing Related Entities and Maintaining Custom Indexes
- Designing a NoSQL Database using Redis
在 ServiceStack 中,您可以覆盖 AppHost 中的 OnSaveSession()
,只要保存会话,它就会被调用。
我想更新存储在 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 中位于:
- Storing Related Entities and Maintaining Custom Indexes
- Designing a NoSQL Database using Redis
在 ServiceStack 中,您可以覆盖 AppHost 中的 OnSaveSession()
,只要保存会话,它就会被调用。