redis的列表在元素的个数比较小的时候使用的是压缩列表,元素比较多的时候就是链表了。那么在转化的过程中是渐进式的还是一下子就转换过来了?如果是一下子就转换过来了会不会有效率问题,会不会阻塞用户的请求?
redis的列表在元素的个数比较小的时候使用的是压缩列表,元素比较多的时候就是链表了。那么在转化的过程中是渐进式的还是一下子就转换过来了?如果是一下子就转换过来了会不会有效率问题,会不会阻塞用户的请求?
当列表中存储的数据量比较小时,列表会采用压缩列表的方式实现,但需要满足一下两个条件:
如果上述任意条件不满足,列表的底层数据结构会转换为双向循环链表链表。
底层数据结构转换是同步完成的,会阻塞,但数据量较少,对客户端影响可忽略。
2 回答931 阅读
1 回答890 阅读
1 回答733 阅读
同步的,会阻塞。就算阻塞了人家性能也是比绝大多数程序员写的那玩意儿要高。
别瞎猜,看源码。
P.S. 3.2 之后
ziplist
已经被quicklist
替代。