【发布时间】:2016-03-12 02:37:56
【问题描述】:
我需要使用 Redis 缓存访问权限。
访问权限是每个用户(应用程序的用户)、功能(用户可以做的事情)和机器(用户可以执行该功能的机器)。
例如:
UserA,编辑名称,machine1
或者UserB,删除机器,机器40
该应用程序包含大约 1000 个功能、6000 台机器和 300 个用户。
我不确定存储访问权限的最佳方法是什么。
选项 1: 将访问权限存储为单个字符串,如下所示:
redis> set userA_EditName_machine1 true
redis> set userA_EditName_machine2 false
redis> set userB_DeleteMachine_machine40 false
选项 2: 将访问权限存储为嵌套哈希:
redis> hset users:userA:EditName machine1 true
redis> hset users:userA:EditName machine2 false
redis> hset users:userB:DeleteMachine machine40 false
我的应用程序是一个 ASP.Net MVC 应用程序,我正在使用 StackExcahnge.Redis 来处理 Redis。
一种选择比另一种有什么优势吗?
编辑:
应用程序需要检查是否允许用户在某台机器上执行某项操作。 查询如下所示:
选项 1:
redis> get user0_function0_machine1
选项 2:
redis> hget users:user0:function0 machine1
【问题讨论】:
-
请指定您需要执行的查询 - 这将确定最佳的数据存储方式。
-
@ItamarHaber 我已将查询添加到问题中
-
@thepirat000 感谢您的链接。我去看看。
标签: caching redis stackexchange.redis