为什么Redis没有LINCR?

时间:2014-10-12 22:31:13

标签: redis

我想知道为什么Redis没有命令增加列表中的元素?

您可以使用INCR递增键值,您可以使用HINCRBY递增哈希集中的项目,并且可以使用ZINCRBY来修改已排序集合的元素。但不在列表中。

这让我很困惑。为什么不呢?

这个决定背后的想法是什么?列表是"不应该像这样使用",那么为什么?他们的工作方式与套装截然不同?那么最重要的是什么?

1 个答案:

答案 0 :(得分:1)

最大的区别是没有可能在Redis列表中有效地访问给定项目。它们被实现为双链表(用于大列表)或完全序列化(用于小列表的ziplist优化)。相比之下,散列和有序集是使用散列表实现的,该散列表允许O(1)分摊项目访问的复杂性。

因此,如果列表存在这样的递增命令,则其复杂性将为O(n)。只是增量不是很有趣。

请注意,如果您需要此功能,可以通过调用LINDEX和LSET轻松地使用服务器端Lua脚本实现它。