gpt4 book ai didi

database-design - Redis ACL架构

转载 作者:IT王子 更新时间:2023-10-29 06:05:08 24 4
gpt4 key购买 nike

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

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

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

第二个想法 - 为每个组创建散列并存储管理员成员和读者成员。这样做的好处是群组的数量可能会少于成员,而且我也可以提取群组的详细信息。

所以我的两个问题是 -

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

我是否应该使用哈希(因为我最终会得到类似 group:1 admins [13,52,12,43] 的数组,其中数组包含用户 ID 或我应该使用其他方法来快速提取 user id 而不必解析数组然后每次都循环遍历它吗?

最佳答案

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

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

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

看来你想要的是,给定一个用户(数字)找到她/他属于哪个组(有限的,较小的集合)。

你听说过BITMAP吗?秒?您可以有一个位图,其中位索引代表用户 ID,0 表示用户不在组中,1 表示归属。 LMK 如果您需要更多详细信息,或者在有意义的情况下将其标记为答案。

关于database-design - Redis ACL架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45215294/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com