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 红黑书中的动态平衡。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值