美文网首页
(1)Redis String原理

(1)Redis String原理

作者: hedgehog1112 | 来源:发表于2020-11-10 09:44 被阅读0次

    比于 Java可修改,是动态字符串(Simple Dynamic String 简称 SDS)内部更像ArrayList

    维护一个字节数组 预分配冗余空间以减少频繁分配,扩容/缩容:1)<1MB时,扩容加倍,其他只扩1MB最大512MB     2) 惰性缩容。不释放空间,留给到期释放等机制释放。

    多个字节组成,每个字节8bit.还可以当做 bitmap 去用

    概要:基本操作、存整数、原理

    1、字符串的基本操作 

    mset 和 mget 可对多个字符串读写 节省网络开销

    2、可存整数

    1)遇到incr,decr自增自减,转成数值计算,此时redisObject的encoding字段为int。整数范围在 $-2^{64}$至$2^{64}-1$。

    2)encoding不同场景显示不一样,容量不同:embstr:<=39字节的字符串。int:8个字节的长整型。raw:大于39个字节的字符串。

    3)常规计数:微博数,粉丝数等。访问次。INCRBY让这些变容易,通过原子递增计数。。

    4、复杂度o(1)

    3、内部原理

    content :保存字符串内容,和 c 一样用 0x0作为结束字符.结束字符不会被计算len 中

    capacity和len 都是泛型,不直接用 int,因为 Redis 不同数据类型不同长度.并在创建字符串时 len 和 capacity 一样大,没有冗余空间,因为修改字符串场景很少.(Redis 真的将内存优化到了极致)

    编码格式待整理:https://zhuanlan.zhihu.com/p/67876900

    相关文章

      网友评论

          本文标题:(1)Redis String原理

          本文链接:https://www.haomeiwen.com/subject/iqbfbktx.html