Redis原理:

动态字符串SDS :

image-20220628214641004

Redis是C语言实现的,其中SDS是一个结构体,源码如下:

例如,一个包含字符串”name” 的sds结构如下:

image-20220628212155339

SDS之所以叫做动态字符串,是因为具备动态扩容的能力,,例如一个内容”hi” SDS:

image-20220628212538155

  • 假如我们要给SDS追加一段字符串,”Amy” ,这里首先申请新内存空间。
  • 如果新的字符串小于1M,则新的空间为扩展后的字符串长度的两倍+1.
  • 如果新的字符串大于1M,则新空间为扩展后字符串长度+1 M+1.称为内存预分配。

image-20220628212753415

image-20220628213022349