redis 大 value 问题?

noble4cc 26天前 23

比如说一个 key 存储的 value 比较大,比如说存储了上百万的 list 或者 hash

redis 取出这种大 value 时怎么性能瓶颈具体是什么原因呢?另外如果我分片取的话,比如每次取一百个值,不全取出来,性能不就快很多了吗

最新回复 (2)
  • surfire91 22天前
    引用 2
    数据传输量和操作时间复杂度的问题。
    你每次取 100 个只,数据传输量是小了。但是时间复杂度不一定低,以 LRANGE 为例,时间复杂度是 O(S+N),这里 N = 100 (小),但是 S 不一定小(距离头或尾的 offset ),且 list 越大,S 也就可能越大。
  • kefirzhang 22天前
    引用 3
    个人理解:第一个网络瓶颈,就是所谓的热 key 问题,热 key 容易造成两个问题,第一个如果是分布式的容易造成单点压力过大,还有如果这个 key 比较大那么可能造成网络阻塞,毕竟就算运营商的带宽是不设限的,但是机器的网卡带宽是有限的。
    第二个就是大 key 存储过大可能造成的问题,如果是是 list hash 或者 set 一次性取过多 那么会造成产生一定的性能消耗,因为 list 和 set 基本都是链表或者双向链表。但是如果是 str 应该不会有额外的算力消耗,就是直接返回一个大块内存。
  • 游客
    4
返回