我想知道为什么Redis没有命令来增加列表中的元素?
您可以使用 INCR 增加键的值,可以使用 HINCRBY 增加哈希集中的项目,还可以使用 ZINCRBY 增加排序集中的元素。但不在列表中。
这让我很困惑。为什么不呢?
这个决定背后的想法是什么?列表“不应该这样使用”,那为什么呢?他们的工作方式与布景非常不同?那么最大的区别是什么?
最佳答案
最大的区别是不可能在 Redis 列表中有效地访问给定的项目。它们被实现为双链表(对于大列表)或完全序列化(ziplist 优化,对于小列表)。相比之下,散列和排序集是使用散列表实现的,散列表允许项目访问的摊销复杂度为 O(1)。
因此,如果列表存在这样的增量命令,则其复杂度将为 O(n)。只是增量并不是很有趣。
请注意,如果您需要此类功能,您可以通过调用LINDEX和LSET,使用服务器端Lua脚本轻松地自行实现。
关于redis - 为什么 Redis 没有 LINCR?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26330686/