种数据结构

1.String

e5aa4e76de0d07f5a5c9a1035262218bb03f0011

1.2 图示
6152b73ba7b8d84a6d0aa3236b9fb21c00c30e16

2.List
32eed4394d903b8b7ea4ad95d552f7fa639396ac

2.1内存结构
25985f6e311574f993388b7c893a012f8fec6756

3.Set
先判断是否是num, 如果是返回IntSet类型
否则返回Dict类型

88757ceed4f551a2b1419461b37891c6ea61ed6b

内存图
be989ab0039efb835d825e07c1f8fe57f15285a1

4.Zset

4.1 元素数量多时 skipList + Dict
beb9a2758c8638eca56a6372522367c5b412b663

dcbd3c3cef12b422490112720fac883ede3c2c8f

3.2 元素数量少时 ZipList
1c168b2551162a75e1b38287733a85cc99bc722a

ZipList如何实现Zset?
343ef34239fe683f8f88543435424bab41272bef

5.Hash
c9fbf3917d7744ca05ead3544f8f35c27c08d1b7

5.1 内存图如下
6b055fe0e1052039497c7f4ccff684e522532b82

5.2 源码
b5a8c6f36bac2ebf44eff47ff8d689f35a2e7bce

ziplist的content进行是否需要转化为dict进行判断
依据是ziplist的数量和size
af76f0d71affec13fcde17163b9e1df60eebf567

hashTypeSet 向redis的Hash对象 插入(1)or更新(0)entry 并且返回零一结果
过程中会检查ziplist,太大会转化为dict
5544d12de16e59964b356a686f6e3b4fbea838b9

45e427fd8d6441efeb96561a6ebf03d6a8290eb7