The Generic Hash Implementation
- Code Path:
src/t_hash.c
The generic hash type is a wrapper around listpack
and dict
, it will switch between two different
implementation and call the routines accordingly.
Listpack Implementation
- Code Path:
src/listpack.c
Listpack is a densed storage of a series of keys and values, it supports storing both integers and strings.
If the hash size is lower than hash_max_listpack_value
, it will be saved as a listpack
.
If the hash size is higher than hash_max_listpack_value
, it will create a dict
and copy
the data from listpack
to the dict
.
Dict Implementation
- Code Path:
src/dict.c
Redis’ dict
is a pretty-standard hash map implementation, with two hash table swapping on rehashing.
The redis’ rehashing implementation is incremental, similar with Go’s map
implementation.