我正在读乔西亚·卡尔森的《雷迪斯在行动》。
在第二章有这样的代码:
conn.zadd('viewed:' + token, {item: timestamp})
conn.zremrangebyrank('viewed:' + token, 0, -26)
conn.zincrby('viewed:', -1, item) # What is this line doing ?
我只是不明白这句话想说什么:
conn.zincrby('viewed:', -1, item)
它似乎正在创建一个名为 -1
在名为 viewed:
并按中指定的值递增 item
. 假设 item
是数字的。我不知道你为什么要这么做。
github的代码链接在这里。
根据redis py中的定义。
我的直觉正确吗?
1条答案
按热度按时间nwnhqdif1#
我为每个命令添加了解释,问题的答案在最后。
它将一个新项目(或更新分数)添加到指定的排序集score as timestamp。
item
将转到排序集末尾的,因为时间戳是当前的。这个rank
此元素的值将是最高的,因为它位于得分最高的列表末尾(timestamp)。它从排序集中删除旧项,只保留最近的25项。最新增加的
item
如果排序集的大小大于25,则不会删除。还有另一个排序集(名为
viewed:
)跟踪所有项目及其相应的视图计数。前两个命令是特定于用户(令牌)的。此命令将元素的视图计数递减(1)。如果将数据建模为,则将每个项放入一个具有默认分数(比如1000)的排序集,并在每次查看时将其递减。之后,你可能会得到最新的产品与他们的最低分数(您可以通过增加all来实现它,并得到排序结果的倒数)