gpt4 book ai didi

Redis唯一增量

转载 作者:IT王子 更新时间:2023-10-29 06:16:01 28 4
gpt4 key购买 nike

我正在尝试在 Redis 上实现评分系统。我从来没有这方面的经验。

我的应用程序应该做的是仅在用户尚未投票时增加一个值,所以我在想这样的事情:

INCR voteme

但前提是这还没有增加,所以想做以下事情:

SET voteme:voterip 1

然后我会计算元素。问题是我认为这在 Redis 中是不可行的,必须考虑另一种方法。

有什么想法吗?


额外问题:

我想通过将结果计数(例如:24)写入 mongodb 中的相应用户来使此数据持久化。一些伪代码会有很大帮助

最佳答案

我不会存储一个计数器,而是直接存储一个包含所有已经投票的用户的集合。

假设为用户1组织了一个投票,每次用户X给用户1投票,你可以执行:

 SADD user:1:votes X

可以轻松检索用户 1 的投票数:

 SCARD user:1:votes

现在如果你需要保持这个计数与另一个商店同步,你可以执行(仍然假设用户 X 投票给用户 1):

 MULTI
SADD users:1:votes X
SCARD user:1:votes
EXEC

诀窍是 SADD 命令返回有效添加到集合中的项目数。如果该项目已经存在,则返回 0。因此很容易运行此 multi/exec block ,检查 SADD 的结果,获取集合的基数(投票数),并将基数推送到另一个存储,仅当该集合已被事务更改。

通过这种方式,您可以(实时)在持久存储中保持计数器最新,同时过滤无用的投票事件。

关于Redis唯一增量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11422412/

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