应用场景:
用一个对象来存储用户信息,商品信息,订单信息等等。
哈希类型类似一个对象
key相当于对象
field相当于属性 value相当于值
底层结构:
底层为一个字典,也是RedisDB用来存储K-V的数据结构
(1)ziplist(压缩列表):当哈希类型元素个数小于hash-max-ziplist-entries配置(默认512个)、同时所有值都小于hash-max-ziplist-value配置(默认64字节)时,Redis会使用ziplist作为哈希的内部实现,ziplist使用更加紧凑的结构实现多个元素的连续存储(有序),所以在节省内存方面比hashtable更加优秀。
(2)hashtable(哈希表)【就是字典dict】:当哈希类型无法满足ziplist的条件时【超过了ziplist的存储个数或者单个数据太大时】,Redis会使用hashtable(此时变为无序)作为哈希的内部实现,因为此时ziplist的读写效率会下降,而hashtable的读写时间复杂度为O(1)。
操作hash命令
1.hget key field: 获取hash key对应的field的value
2.hset key field value :设置hash key对应的field的value
3.hdel key field: 删除hash key对应的field的value
4.hgetall key : 获取key的所有 field
5.hexists key field :判断hash key是否有field
6.hlen key: 获取hash key field的数量
7.hgetall key : 获取key所有field和value
8.hkeys key: 获取key所有field
9.hvals key: 获取key所有value
10.hmget key :批量获取
11.hmset key:批量设置
12.hincrby key field intCounter : 设置key中intCounter自增
保存用户数据
key存储 用户id,field存储属性,value存储值
优点:直观,方便修改查询,节省空间。