Redis 用于会话存储

3
我正在构建一个安全服务,作为应用程序中的一组服务的一部分。我在考虑使用Redis来存储会话。会话是一个数据结构,看起来像这样:
{
   string   : sessionToken
   DateTime : expiryUtc
   string[] : permissionKeys
}

我只需要创建、读取和删除会话。如果Redis能够删除过期的会话,那就太好了,但这并非必要。作为Redis的新手,我需要阅读一些资料,但是有没有Redis经验的人能够指导我正确地实现这一点,假设Redis是一个好的选择。顺便说一句,我在Mono平台上,并且迄今为止选择了StackExchange.Redis客户端,因为在某个阶段我将想要将Redis集群化。我可以更改这个选择。

因为你提到了Mono,我想到了内置的Redis会话状态。这是链接PermissionKeys是存储在会话中的对象。 - Yusuf Uzun
1个回答

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接