Redis 用于会话存储

Redis for session storage

我正在构建一个安全服务,作为构成应用程序的一组服务的一部分。我正在考虑使用 Redis 来存储会话。会话是一种数据结构,如下所示:

{
   string   : sessionToken
   DateTime : expiryUtc
   string[] : permissionKeys
}

我需要做的就是创建、读取和删除会话。如果我可以让 Redis 删除过期的会话,那很好但不是必需的。作为 Redis 的菜鸟,我需要阅读一些书,但假设 Redis 是一个不错的选择,有 Redis 经验的人可以给我任何关于实现这一目标的正确方法的指导。顺便说一句,我在 Mono 平台上并且到目前为止选择了 StackExchange.Redis 客户端,因为在某个阶段我想要集群 Redis。我愿意更改此选择。

您可以使用 Redis 哈希,它们会很好地匹配您的结构:http://redis.io/topics/data-types-intro#redis-hashes
会话令牌可以是整个哈希的键。 StackExchange Redis 客户端有一个 KeyExpire 方法,它可以接受一个 DateTime 参数,所以你可以让 Redis 使你的密钥过期。
在 Redis 哈希中你不能有嵌套结构所以你的 permissionKeys 和任何其他将进入内部的值必须存储为简单值 - 你可以将它们序列化为 json.
哈希的另一件事是它们允许进行一些内存优化:http://redis.io/topics/memory-optimization#use-hashes-when-possible 如果您要创建许多会话,这将非常有用(因为 Redis 会将所有这些存储在 ram 中)。