Redis用于会话存储

时间:2015-07-01 16:12:21

标签: redis session-storage

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

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

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

1 个答案:

答案 0 :(得分:1)

你可以使用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中),这可能非常有用。