redis数据结构之dict 概要

1.移植使用

void *zmalloc(size_t size);
void *zcalloc(size_t size);
void zfree(void *ptr);
#define random() rand()
#define snprintf _snprintf_s
long long timeInMilliseconds(void) {

    SYSTEMTIME st;
    GetLocalTime(&st);
    return (((long long)st.wSecond) * 1000) + (st.wMilliseconds);

    //struct timeval tv;
    //gettimeofday(&tv,NULL);
    //return (((long long)tv.tv_sec) * 1000) + (tv.tv_usec / 1000);
}

2.特点
使用2^n为哈希数组长度,而不是通用的质数
使用链表来处理碰撞问题
将扩容分散到多个小步骤中,以实现渐进式rehash
渐进式rehash可以在空闲时运行指定时间
3.核心
如何实现渐进式rehash
其实一步到位也是可以得,不过渐进式rehash可以使得避免不可预料的延迟,将整体延迟分散到多个步骤中,类似于map 红黑书中的动态平衡。

你可能感兴趣的:(数据结构)