Database design Redis ACL体系结构

Database design Redis ACL体系结构,database-design,architecture,redis,Database Design,Architecture,Redis,我想使用redis来检查用户是否对网站上的某些地方有权限 该网站允许用户创建功能有限的群组。基本上有两种类型的用户(可能更多)——管理员和读者。一个用户可以参加不同的组(10-15组) 第一个想法-为每个用户创建redis哈希,并包括他们作为管理员的组和他们作为读者的组。然后,我可以通过在注销时删除记录以及在登录和更改时设置权限来控制这些。散列也可能过期 第二个想法-为每个组创建哈希,并存储管理员成员和读者成员。这样做的好处是,可能会有比成员更少的组,我也可以提取组的详细信息 所以我的两个问题是

我想使用redis来检查用户是否对网站上的某些地方有权限

该网站允许用户创建功能有限的群组。基本上有两种类型的用户(可能更多)——管理员和读者。一个用户可以参加不同的组(10-15组)

第一个想法-为每个用户创建redis哈希,并包括他们作为管理员的组和他们作为读者的组。然后,我可以通过在注销时删除记录以及在登录和更改时设置权限来控制这些。散列也可能过期

第二个想法-为每个组创建哈希,并存储管理员成员和读者成员。这样做的好处是,可能会有比成员更少的组,我也可以提取组的详细信息

所以我的两个问题是——

哪种方法在架构方面更好?


我是否应该使用哈希(因为我最终会得到类似于
group:1管理员[13,52,12,43]
数组保存用户id的位置,或者我应该使用其他方法快速提取
用户id
,而无需解析数组,然后每次循环遍历它?

我想建议一种稍微不同的方法,IMO更适合该用例

我假设您的每个用户都有一个唯一的标识符。让我们同意您使用的是普通旧号码(或者您有一个将用户id映射到普通旧号码的查找表)。从现在起,用户将被称为0(第一个用户)、1(第二个用户)等等

我还假设用户总数远远超过系统中潜在的组数。换句话说,你将拥有数百万用户,但只有几十个组(或多或少)

似乎您想要的是,给定一个用户(编号),找到她/他所属的组(有限的、小的集合)


你听说过s吗?你可以有一个位图,其中位的索引表示用户ID,0表示用户不在组中,1表示归属。如果需要更多详细信息,请点击LMK,如果有意义,请将其标记为答案。

我以前没有听说过位图。我是Redis的新手。我现在正在阅读有关它的文章。快速提问-如果我知道了怎么办这个小组有多种角色,而不仅仅是两个?读完书,思考一下,如果需要的话,提出一个新问题……;)为你感到高兴——现在,去做一些很棒的事情吧;皮塔玛,我只是想再次感谢你的回答。我将围绕这个概念构建我的ACL。这很有帮助。