首页 文章

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

提问于
浏览
1

我想更新存储在redis中的多个servicestack用户会话 . 我想返回所有自定义属性设置为某个值的会话,然后我可以处理它们 . 目前我得到的最佳解决方案是返回所有密钥:

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

我认为这不会很好 . 我想做一些类似的事情:

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

这是可能的redis,如果是这样,理想情况下使用ServiceStack标准库 .

1 回答

  • 1

    而不是 SearchKeys ,您希望使用更新的Redis Scan API's,它允许您迭代光标中的键 .

    Redis值是blobbed而没有索引,因此没有太多机会对其进行优化 . 最有效的方法是使用自定义server-side LUA operation检查值,这将最小化发送到客户端的请求和有效负载的数量 .

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

    由于Redis不支持服务器端查询或索引,因此Redis的方法是在保存Session时预先查询查询和维护自定义索引的查询,有关如何在Redis中维护自定义索引的一些信息位于:

    在ServiceStack中,您可以覆盖AppHost中的 OnSaveSession() ,每当保存会话时都会调用它 .

相关问题