一、简介
1.1 介绍
Hash类型也是一个高频的数据类型,key值为字符串,value值为hash类型(即KV对),一般用于存储对象。
对外呈现数据结构类似Java的Map<String, Map<String, Objct>>集合
hash类型它在redis中内部编码:
listpack(压缩列表):当value中的field个数小于 hash-max-listpack-entries 配置(默认512个)同时所有的filed对应的value值都小于hash-max-listpack-value配置(默认64个字节)时,Redis会使用ziplist作为hash的内部实现。listpack使用更加紧凑的结构实现多个元素的连续存储,所以在节省内存方面比hashtable更加优秀。
hashtable(哈希表):当value中kv对无法满足listpack的条件时,Redis会使用hashtable作为hash的内部实现。因为此时ziplist的读写效率下降,而hashtable的读写时间复杂度为O(1)。
小提示
1>Redis 5之前使用的是ziplist,因为致命的缺陷-连锁更新,在极端条件下会有着极差的性能ÿ