- hash:k和v都是string的hash表。
- HSET(設(shè)置集合數(shù)據(jù),4.0之前只能設(shè)置1個,之后可以設(shè)置多個),HSETNX(若k不存在則設(shè)置對應(yīng)v),HDEL(刪除指定kv,可以一次刪除多個),DEL(刪除Hash對象),HMSET(設(shè)置多個kv,4.0之后廢棄),HGETALL(查找全部數(shù)據(jù)),HGET(查詢k對應(yīng)的v),HLEN(查找Hash中的元素總數(shù)),HSCAN(從指定位置查詢一定量數(shù)據(jù),ziplist較小會全部返回)。
- hash數(shù)據(jù)量較小使用ziplist存儲,數(shù)據(jù)量大時使用hashtable存儲(區(qū)別set使用的hashtable的value是null)。
- hashtable:底層dict里面有ht[2]字段,ht里是兩個結(jié)構(gòu)體dictht,kv數(shù)據(jù)存儲在dictht的table字段指向的dictEntry鏈表(拉鏈法頭插法)中。
- 哈希掩碼與哈希值相與確定該值在hashtable位置
- 負載因子=used/size,負載因子大于等于1在不執(zhí)行bgsave和bgrewriteaof時會擴容,負載因子大于5必須擴容。負載因子小于0.1縮容。
- 擴容為新表ht[1]分配大于used二倍的最小2的次方冪,縮容分配新表大于used最小的2的次方冪。
- 漸進rehash擴縮容,對ht[0]元素操作才將ht[0][rehashidx++]處元素轉(zhuǎn)移到ht[1],遷移完成后交換兩鏈表指針后在ht[1]新建空表并rehashidx設(shè)為-1
文章來源地址http://www.zghlxwxcb.cn/news/detail-834263.html
文章來源:http://www.zghlxwxcb.cn/news/detail-834263.html
到了這里,關(guān)于redis的hash數(shù)據(jù)結(jié)構(gòu)底層簡記的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!