哈希在很多编程语言中都有着很广泛的应用,而在Redis中也是如此,在redis中,哈希类型是指Redis键值对中的值本身又是一个键值对结构,形如 value=[{field1,value1},...{fieldN,valueN}] ,其与Redis字符串对象的区别如下图所示:
![3f91fbb6a10053ed96aadc1fda1ffb8c.png](https://img-blog.csdnimg.cn/img_convert/3f91fbb6a10053ed96aadc1fda1ffb8c.png)
一、内部编码
哈希类型的内部编码有两种: ziplist(压缩列表) , hashtable(哈希表) 。只有当存储的数据量比较小的情况下,Redis 才使用压缩列表来实现字典类型。具体需要满足两个条件:
- 当哈希类型元素个数小于hash-max-ziplist-entries配置(默认512个)
- 所有值都小于hash-max-ziplist-value配置(默认64字节)ziplist 使用更加紧凑的结构实现多个元素的连续存储,所以在节省内存方面比 hashtable 更加优秀。当哈希类型无法满足 ziplist 的条件时,Redis会使用 hashtable 作为哈希的内部实现,因为此时 ziplist 的读写效率会下降,而 hashtable 的读写时间复杂度为O(1)。
二、常用命令
Redis哈希对象常用命令如下表(点击命令可查看命令详细说明)。
R