什么是Hash
Redis 中的 Hash和 Java的 HashMap 更加相似,都是数组+链表的结构.当发生 hash 碰撞时将会把元素追加到链表上.值得注意的是在 Redis 的 Hash 中 value 只能是字符串
渐进式 rehash
当hash触发rehash时,会新建一个hash表并分配内存,同时维护一个rehashIndex变量,初始化为0,表示rehash开始,然后每次线程对hash进行增删改查操作时,都会把h1中的rehashIndex位置的数据复制到h2中,同时对rehashIndex进行加一操作, 这样,最终h1会在某一时刻变为空表,此时会把h2改为h1,然后释放h1占用的内存在rehash过程中,所有的新增操作都只会在h2中发生,查询操作会先去h1中查找,然后再到h2中查找,这就是redis的渐进式rehash过程。