【发布时间】:2021-10-26 04:41:45
【问题描述】:
我们有一个用例,我们必须在 REDIS 中存储一些用户 ID (testUserId) 并将它们临时标记为测试用户,并将 testingMode 标志标记为活动/非活动。然后我们必须在 API 中检查 testingMode 是否处于活动状态,然后传递的用户 ID 是否是测试用户。
到目前为止,我所做的是存储一个标志和一个包含用户列表的数组。
这个实现的问题是,在检查时,我们必须从 REDIS 获取整个数据并将其转换为 List(array) 并查看 testUserId 是否存在。有些人对此无效表示担忧。
有没有更好的方法来做到这一点?
我曾想过将testUserId 存储为键,将testingMode 标志存储为值,但这样会创建太多行。这是最好的方法还是有更好的方法?
【问题讨论】:
-
简单更好,不用担心 Redis 中有很多键。对于 Redis,您的限制是您的记忆,这对所有内容(值)都有效,而不仅仅是键。在您的用例中,我将简单地以
testuser:666格式存储密钥(具有任何值)(在此示例中,666是您的内部用户标识符)。确定某个用户是否是测试用户的业务逻辑将仅仅是密钥的存在。此外,Redis 中没有“行”的概念。无论您有多少条记录,对特定记录的访问(通过密钥)都是在线性时间内完成的。 -
@nitrin0 我相信您的意思是访问是在恒定时间内完成的,而不是线性的。请参阅redis.io/topics/data-types 进行验证。
-
@btilly 应该使用 0-notation :)
-
与@btilly 建议和使用的套装一起去
标签: algorithm caching data-structures redis hashtable