使用Redis作为会话状态提供程序

时间:2015-06-12 00:10:12

标签: asp.net session redis stateless

我想用ASP.Net创建真正的 RESTful API。根据REST架构。应用程序必须是无状态的。意思是我无法使用正常会话。我找到了一个文档here,描述了如何将Redis用作会话状态提供程序。既然它是外部的(不是服务器的一部分),它是否适合创建无状态API?我该怎么做呢我是否只需创建一个密钥来声明用户已通过身份验证,然后可能是引用当前用户的密钥,或者我认为是错误的?

1 个答案:

答案 0 :(得分:2)

您可以使用Redis作为缓存来保存有关用户的各种状态。这个想法是,当用户登录时,您可能需要从数据库(名称,地址等)加载一堆关于它们的信息,您知道用户可能需要重用其中的一些信息。信息,所以你不想每次都从数据库继续重新加载它。相反,您可以将其缓存在Redis中几分钟,因此根据用户的下一个请求,您只需从Redis中快速提取数据,而无需返回数据库。

对于身份验证,您可以在redis缓存中创建一个临时令牌,您也可以将其作为cookie返回给用户,以便您可以检查它是否存在于后续请求中,而不是需要运行一堆耗时的bcrypt哈希值或者每次后续身份验证都需要一些。

这一切都是无状态的,因为即使缓存由于某种原因不可用,用户的请求仍然包含回答他或她的请求所需的所有状态。 Redis正在做的就是让你加快回复的速度。