【问题标题】:LIST alternative in redisRedis 中的 LIST 替代方案
【发布时间】:2011-11-13 19:59:06
【问题描述】:

Redis.io

从时间上看Redis Lists的主要特点 复杂性是对常量时间插入和删除的支持 靠近头部和尾部的元素,即使插入了数百万个元素 项目。在列表的极端附近访问元素非常快 但是如果您尝试访问一个非常大的列表的中间部分会很慢,因为它 是一个 O(N) 操作。

当数据太高且写入少于读取时,LIST 替代方案是什么

【问题讨论】:

  • “fata ia too high”是什么意思?
  • 当list(llen)的长度大于10lacs时

标签: redis


【解决方案1】:

这是我在做之前肯定会进行基准测试的东西,但是如果您在访问列表中间的项目时确实遇到了性能问题,那么有几个真正取决于您的用例的替代方案。

  1. 不要列出这么大的清单,老化/修剪不再重要的部分。
  2. 记住列表中的热门部分。如果某个特定的分页范围比其他范围更频繁地被请求,则将其设为自己的列表。检查它是否已经存在,以及它是否没有在分页范围内创建列表的子集。
  3. 从一开始就将您的列表放入“可管理的大小”(无论您对可管理的定义是什么)。如果列表纯粹是加法的(不会从列表中删除),您可以使用项目的模数索引作为键的一部分,以便您的列表存储在较小的存储桶中。例如:key = "your_key_name_" + index % 100000

【讨论】:

  • 如何知道列表长度,如果我使用了 3 个用例
  • 复制怎么样?我的意思是它在这种情况下有用吗
  • 复制/分片可能很有用,但它实际上更具体地取决于您在做什么。如果它主要是只读的,则您可以拥有只读的从属设备,而可写的主设备正在提供这些服务。同样,在进行任何这些更改之前,我会使用模拟您正在尝试的数据进行一些基准测试。
  • 如何根据 3 个用例进行 LRANGE
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-08-18
  • 2018-01-30
  • 1970-01-01
  • 1970-01-01
  • 2020-08-12
  • 1970-01-01
相关资源
最近更新 更多